縲伸aravel縲羨PI蜻シ縺ウ蜃コ縺怜ョ溯」 B繧ォ繝シ繝API邱ィ

閾ェ繧オ繧、繝医d繧キ繧ケ繝繝縺九i縲∽サ悶ョ繧オ繧、繝医ョ諠蝣ア繧貞茜逕ィ縺吶k縺溘a縺ォAPI繧貞他縺ウ蜃コ縺呎ゥ溯ス縺ッ繧医¥隕∵悍鬆ゅ″縺セ縺吶ョ縺ァ縲∽サ雁屓縺ッLaravel繧剃スソ縺」縺ヲAPI蜻シ縺ウ蜃コ縺励r陦後>縺セ縺吶

繧オ繝ウ繝励Ν縺ィ縺励※縺。繧縺縺ゥ譯井サカ蟇セ蠢懊@縺ヲ縺繧毅繧ォ繝シ繝医ョAPI繧貞茜逕ィ縺励∪縺吶

Laravel縺ッ8.x縺ァ遒コ隱阪@縺ヲ縺縺セ縺吶′縲6,7霎コ繧翫〒繧ょ撫鬘後↑縺丞虚菴懊@縺セ縺吶

Laravel縺ァAPI繧貞他縺ウ蜃コ縺呎婿豕

HTTP繝ェ繧ッ繧ィ繧ケ繝医ョ逕滓舌↑縺ゥ髱「蛟偵↑蜃ヲ逅縺ッ縺吶∋縺ヲ繝代ャ繧ア繝シ繧ク縺ォ縺贋ササ縺帙@縺セ縺吶

Laravel蜈ャ蠑上ラ繧ュ繝・繝。繝ウ繝医〒縺ッGuzzle縺ョ蛻ゥ逕ィ縺梧耳螂ィ縺輔l縺ヲ縺繧九◆繧√√%縺。繧峨r蛻ゥ逕ィ縺励∪縺吶

Laravel8.x HTTP 繧ッ繝ゥ繧、繧「繝ウ繝

Guzzle繧、繝ウ繧ケ繝医シ繝ォ

繝繝輔か繝ォ繝医〒繧ゅう繝ウ繧ケ繝医シ繝ォ縺輔l縺ヲ縺繧九ッ縺壹〒縺吶′縲∽ス輔°縺ョ諡榊ュ舌↓蜑企勁縺励※縺励∪縺」縺ヲ縺縺溷エ蜷医ッ縲∽ク玖ィ倥さ繝槭Φ繝峨〒蜀阪う繝ウ繧ケ繝医シ繝ォ縺ァ縺阪∪縺吶

composer require guzzlehttp/guzzle

縺薙l縺ァguzzle縺ョ貅門y縺後〒縺阪∪縺励◆縲Laravel縺ァ縺ッguzzle繧偵◎縺ョ縺セ縺セ菴ソ縺縺ョ縺ァ縺ッ縺ェ縺上?TTP繝輔ぃ繧オ繝シ繝峨′謠蝉セ帙☆繧九携et縲阪継ost縲阪継ut縲阪継atch縲阪慧elete縲阪Γ繧ス繝繝峨r莉九@縺ヲ蛻ゥ逕ィ縺励∪縺吶

蝓コ譛ャ逧縺ェ繝ェ繧ッ繧ィ繧ケ繝

蜈ャ蠑上ラ繧ュ繝・繝。繝ウ繝医↓險倩シ峨&繧後※縺繧九た繝シ繧ケ縺ッHTTP繝輔ぃ繧オ繝シ繝峨r蛻ゥ逕ィ縺励◆繧ゅョ縺ァ縺吶′縲“uzzle繧偵◎縺ョ縺セ縺セ蛻ゥ逕ィ縺吶k譁ケ豕輔b菴オ險倥@縺ヲ縺縺阪∪縺吶

Guzzle縺ョ蜈ャ蠑上ラ繧ュ繝・繝。繝ウ繝

Curl

縺セ縺壹ッcurl繧ウ繝槭Φ繝峨〒繝ェ繧ッ繧ィ繧ケ繝医r謚輔£繧句エ蜷医ョ繧オ繝ウ繝励Ν

curl --location --request GET https://api.bcart.jp/api/v1/orders' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {{key}}'

縺薙ョ繝ェ繧ッ繧ィ繧ケ繝医r繧ス繝シ繧ケ縺ァ陦ィ迴セ縺励※縺縺阪∪縺吶

curl: (1) Protocol 窶懌鷲ttps窶 not supported or disabled in libcurl

蜈ャ蠑上槭ル繝・繧「繝ォ縺ォ縺ッ荳願ィ倥〒險倩シ峨&繧後※縺縺セ縺吶′縲『indows縺ョ繧ウ繝槭Φ繝峨励Ο繝ウ繝励ヨ縺ェ縺ゥ縺ァ縺ッ荳願ィ倥ョ繧ウ繝槭Φ繝峨r縺昴ョ縺セ縺セ螳溯。後☆繧九→繧ィ繝ゥ繝シ縺ォ縺ェ繧翫∪縺吶ゅす繝ウ繧ー繝ォ繧ッ繧ゥ繝シ繝繝シ繧キ繝ァ繝ウ縺ァ蝗イ縺」縺ヲ縺繧九%縺ィ縺悟次蝗縺ァ縺吶ョ縺ァ縲∝ィ縺ヲ繝繝悶Ν繧ッ繧ェ繝シ繝繝シ繧キ繝ァ繝ウ縺ォ譖ク縺肴鋤縺医∪縺吶

curl --location --request GET "https://api.bcart.jp/api/v1/orders" \
--header "Accept: application/json" \
--header "Authorization: Bearer {{key}}"

繝輔ぃ繧オ繝シ繝

Larave縺願岬繧√ョ繝輔ぃ繧オ繝シ繝峨r蛻ゥ逕ィ縺吶k譁ケ豕

use Illuminate\Support\Facades\Http;

class BcartAPI
{
    public static function getOrders(){
            $response = Http::accept('application/json')
                ->withToken(config('app.bcart_key'))
                ->get(
                'https://api.bcart.jp/api/v1/orders', [
                'limit' => '100',
            ]);

            if($response->successful()){
                return json_decode($response->getBody(), true);
            }else{
                throw new \Exception('ERROR response:'.$response->status());
            }
}
}

Laravel縺ョHTTP繧ッ繝ゥ繧、繧「繝ウ繝医Λ繝繝代シ縺ッ縲√け繝ゥ繧、繧「繝ウ繝医∪縺溘ッ繧オ繝シ繝舌ョ繧ィ繝ゥ繝シ(繧オ繝シ繝舌°繧峨ョ縲400縲阪♀繧医ウ縲500縲阪Ξ繝吶Ν縺ョ蠢懃ュ)縺ァ萓句、悶r謚輔£縺セ縺帙s縲

successful縲…lientError縲《erverError繝。繧ス繝繝峨r菴ソ逕ィ縺励※縲√%繧後i縺ョ繧ィ繝ゥ繝シ縺ョ縺縺壹l縺九′霑斐&繧後◆縺九←縺縺九r蛻、螳壹@縺ヲ蜃ヲ逅縺吶k蠢隕√′縺ゅj縺セ縺吶

accept

繝ャ繧ケ繝昴Φ繧ケ縺ィ縺励※諠ウ螳壹☆繧九さ繝ウ繝繝ウ繝繧ソ繧、繝励r謖螳壹@縺セ縺

withToken

Authorization繝倥ャ繝縺ォBearer繝医シ繧ッ繝ウ繧定ソス蜉縺励◆縺蝣エ蜷医↓蛻ゥ逕ィ縺励∪縺吶

get

繧ィ繝ウ繝峨昴う繝ウ繝医r謖螳壹@縺セ縺吶ゅΜ繧ッ繧ィ繧ケ繝医ヱ繝ゥ繝。繝シ繧ソ縺ィ縺励※莉倅ク弱☆繧九b縺ョ縺ッ隨ャ莠悟シ墓焚縺ォ驟榊励〒謖螳壹@縺セ縺吶ゅし繝ウ繝励Ν繧ウ繝シ繝峨□縺ィlimit=100縺ョ驛ィ蛻縺ォ縺ェ繧翫∪縺吶

Guzzle繧堤峩謗・蛻ゥ逕ィ

繝輔ぃ繧オ繝シ繝峨↑繧薙°菴ソ繧上sシ;uzzle繧偵◎縺ョ縺セ縺セ菴ソ縺繧薙□シ√→縺縺譁ケ豕

use GuzzleHttp\Client;

class BcartAPI
{

    public static function getOrders(){
        $client = new Client();
        try{
            $response = $client->request(
                'GET',
                'https://api.bcart.jp/api/v1/orders?limit=100',
                [   'headers' => [
                    'Accept'     => 'application/json',
                    'Authorization'      => 'Bearer '.config('app.bcart_key'),
                    ],
                    'http_errors' => false //繧ィ繝ゥ繝シ繧る壹☆謖螳
                ],

            );

            if($response->getStatusCode() === 200){
              return json_decode($response->getBody(), true);
            }else{
               throw new \Exception('ERROR response:'.$response->getStatusCode());
            }
}
}

Guzzle縺ョ蝣エ蜷医ッ縲”ttp_errors繧断alse縺ィ縺吶k縺ィ繝ャ繧ケ繝昴Φ繧ケ繧ウ繝シ繝峨′400繧500縺ョ蝣エ蜷医〒繧ょヲ逅繧堤カ咏カ壹@縺セ縺吶ゅ◎縺ョ縺溘a縲22陦檎岼縺ァ繝ャ繧ケ繝昴Φ繧ケ繧ウ繝シ繝峨′200莉・螟悶ッ繧ィ繝ゥ繝シ蜃ヲ逅繧偵@縺ヲ縺縺セ縺吶

蛟倶ココ逧縺ォ縺ッLaravel縺ョHTTP繝輔ぃ繧オ繝シ繝峨r蛻ゥ逕ィ縺励◆譁ケ縺後さ繝シ繝峨′隕九d縺吶>縺ョ縺ァ縲√%縺。繧峨r謗。逕ィ縺励※縺縺阪∪縺吶

縺薙l縺ァ辟。莠九Μ繧ッ繧ィ繧ケ繝医r謚輔£繧九%縺ィ縺ッ縺ァ縺阪k繧医≧縺ォ縺ェ繧翫∪縺励◆縲

繝ャ繧ケ繝昴Φ繧ケ繝繝シ繧ソ縺ョ蜃ヲ逅

繝ェ繧ッ繧ィ繧ケ繝医r謚輔£縺溘i繝ャ繧ケ繝昴Φ繧ケ縺瑚ソ斐▲縺ヲ縺阪∪縺吶ョ縺ァ縲√ョ繝シ繧ソ縺ォ譬シ邏阪☆繧九↑縺ゥ縺ョ謇狗カ壹″縺悟ソ隕√↓縺ェ繧翫↑縺吶

API繧呈署萓帙@縺ヲ縺繧倶シ夂、セ讒倥〒縺ゅl縺ー縲√Ξ繧ケ繝昴Φ繧ケ繝繝シ繧ソ縺ョ繧、繝ウ繧ソ繝シ繝輔ぉ繝シ繧ケ縺ォ縺、縺縺ヲ繧ゅラ繧ュ繝・繝。繝ウ繝医r謠蝉セ帙@縺ヲ縺繧九ッ縺壹〒縺吶ョ縺ァ縺励▲縺九j縺ィ遒コ隱阪@縺セ縺励g縺縲

繝峨く繝・繝。繝ウ繝医→菴オ縺帙※縲∝ョ滄圀縺ョ繝ャ繧ケ繝昴Φ繧ケ繝繝シ繧ソ繧偵Ο繧ー縺ェ縺ゥ縺ォ蜃コ蜉帙@縺ヲ遒コ隱阪☆繧九%縺ィ繧る崎ヲ√〒縺吶

萓九∴縺ー縲√%縺。繧

orders繝ャ繧ケ繝昴Φ繧ケ繝繝シ繧ソ螳夂セゥ

蜈ャ蠑上ョ繝峨く繝・繝。繝ウ繝医→縺励※繝ャ繧ケ繝昴Φ繧ケ繝繝シ繧ソ縺ョ迚ゥ逅蜷阪′螳夂セゥ縺輔l縺ヲ縺縺セ縺吶

tano縺」縺ヲ縺ェ繧薙□繧阪≧縲√√

縺ィ諤昴>縺ェ縺後i繧ウ繝シ繝繧」繝ウ繧ー縺励※縺ソ縺セ縺励◆縺後∝ョ溯。後☆繧九→繧ィ繝ゥ繝シ縺ォ縺ェ繧翫∪縺励◆縲

Undefined index: tano_last_name

tano縺ェ繧薙※遏・繧翫∪縺帙s縺ィ縺ョ縺薙→縲ゅ◎縺薙〒螳滄圀縺ョ繝繝シ繧ソ繧偵Ο繧ー蜃コ蜉帙@縺溽オ先棡縺後%縺。繧

'tanto_last_name' => 'B',
'tanto_first_name' => '繧ォ繝シ繝',
'tanto_last_name_kana' => '繝薙シ',
'tanto_first_name_kana' => '繧ォ繝シ繝',

縲荊ano縲阪〒縺ッ縺ェ縺上荊anto縲阪〒縺励◆縲

繝槭ル繝・繧「繝ォ繧堤「コ隱阪☆繧九%縺ィ繧る崎ヲ√〒縺吶′縲∝ョ滄圀縺ョ繝繝シ繧ソ繧りヲ九↑縺後i繧ウ繝シ繝繧」繝ウ繧ー縺励◆譁ケ縺後う繝。繝シ繧ク縺後▽縺阪d縺吶¥菴懈・ュ縺梧漉繧区ー励′縺励∪縺吶

繝ャ繧ケ繝昴Φ繧ケ繝繝シ繧ソ縺ョ譬シ邏

繝繝シ繧ソ蝙九↓蜷医o縺帙※縲∵シ邏榊ヲ逅繧定。後>縺セ縺吶ゅし繝ウ繝励Ν縺ォ縺励◆ordresAPIh縺ッ蜿玲ウィ諠蝣ア縺碁榊励〒霑泌唆縺輔l縺セ縺吶ョ縺ァ縲√Ν繝シ繝励@縺ヲ蜿玲ウィ諠蝣ア繧剃ス懈舌@縺ヲ縺縺阪∪縺吶

       $data = json_decode($response->getBody(), true);
       foreach($data['orders'] as $order_record){
           $order = new Order();
           $order->b_id = $order_record['id'];
           $order->b_code = $order_record['code'];
           $order->price = $order_record['total_price'];
           $order->ordered_at = $order_record['ordered_at'];
           $order->save();
       }

縺九↑繧雁、ァ髮第滑縺ェ蜃ヲ逅縺ョ莉墓婿縺ァ縺吶′縺ィ繧翫≠縺医★蜍輔″縺ッ縺励∪縺吶ゑシ医%縺ョ縺セ縺セ蜍輔°縺吶→蜷後§蜿玲ウィ逡ェ蜿キ縺碁崎、逋サ骭イ縺輔l縺ヲ縺縺阪∪縺吶′シ

蜃ヲ逅縺ォ縺、縺縺ヲ縺ッ縲√ョ繝シ繧ソ縺ョ迚ケ諤ァ縺ォ蜷医o縺帙※繧ウ繝シ繝繧」繝ウ繧ー繧偵@縺ヲ縺縺阪∪縺励g縺縲

縺セ縺ィ繧

莉雁屓縺ッLaravel縺九i螟夜Κ縺ョAPI繧貞茜逕ィ縺吶k譁ケ豕輔r隗」隱ャ縺縺溘@縺セ縺励◆縲ゅし繧、繝医ョ讖溯ス繧呈僑蠑オ縺励※縺縺丈ク翫〒縺ッAPI縺ョ蛻ゥ逕ィ縺ッ谺縺九○縺ェ縺繧ゅョ縺ィ縺ェ繧翫∪縺吶ョ縺ァ縺懊イ蜿り縺ォ縺励※縺ソ縺溘¥縺縺輔>縲

繝槭ル繝・繧「繝ォ縺悟ィ縺ヲ豁」縺励>縺ィ繧る剞繧峨↑縺縺ョ縺ァ縲∝峅縺」縺溘i螳滄圀縺ョ繝繝シ繧ソ繧貞コ蜉帙@縺ェ縺後i騾イ繧√※縺縺上%縺ィ繧る崎ヲ√〒縺吶ュ縲

繧ウ繝。繝ウ繝医r谿九☆