Apex Legends APIをLaravelで叩いてみた

#使用環境
・MAC
・Laravel7.5
・Ps4

#目標
今回はAPIからデータを取得し、実際に使える形に整形することを目標とします。

#APIキーの作成
Tracker Networkというサービスでアプリケーションを作成します。
https://tracker.gg/developers/apps

・サイトに飛び、画面左の「Create application」をクリック。
・必要事項を入力し、「Create app」をクリック。
・APIキーが作成されるので、コピーしておいてください。

```
    public function getApiData(){
        //API Key
        $header = array(
            "TRN-Api-Key:作成されたAPIキー"
        );

        //user情報取得
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,"https://public-api.tracker.gg/v2/apex/standard/profile/デバイス/ID");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

        $response = curl_exec($ch);
        $profile = json_decode($response, true);  //←取得データ

        //データ整形
        $result_data = [
            'level' => $profile['data']['segments'][0]['stats']['level']['value'],
            'kills' => $profile['data']['segments'][0]['stats']['kills']['value'],
            'rankScore' => $profile['data']['segments'][0]['stats']['rankScore']['value'],
            'activeLegendName' => $profile['data']['metadata']['activeLegendName'],
        ];
        curl_close($ch);

        return view('result',['result_data' => $result_data]);
    }
```

```
$header = array(
 　"TRN-Api-Key:作成されたAPIキー"
);
```
APIキーをheaderに入れて通信します。

```
//user情報取得
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"https://public-api.tracker.gg/v2/apex/standard/profile/デバイス/PSNID");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
```

デバイス部分はPC版の場合は「origin」、Xboxの場合は「xbl」、Ps4の場合は「psn」と入力してください。ID部分はデバイスごとのIDを入力してください。(PSNIDなど)

```
$result_data = [
    'level' => $profile['data']['segments'][0]['stats']['level']['value'],
    'kills' => $profile['data']['segments'][0]['stats']['kills']['value'],
    'rankScore' => $profile['data']['segments'][0]['stats']['rankScore']['value'],
    'activeLegendName' => $profile['data']['metadata']['activeLegendName'],
];
```
取得したデータを使いやすく整形します。ここは任意です。
配列型式がたまに変わるようなので気をつけてください。
↓実際に取得したデータ（一部隠しています）

```
'data' =>
 array (
   'platformInfo' =>
   array (
     'platformSlug' => 'psn',
     'platformUserId' => '',
     'platformUserHandle' => '',
     'platformUserIdentifier' => '',
     'avatarUrl' => 'https://avatar-cdn.tracker.gg/api/avatar/2/.png',
     'additionalParameters' => NULL,
   ),
   'userInfo' =>
   array (
     'userId' => NULL,
     'isPremium' => false,
     'isVerified' => false,
     'isInfluencer' => false,
     'countryCode' => NULL,
     'customAvatarUrl' => NULL,
     'customHeroUrl' => NULL,
     'socialAccounts' =>
     array (
     ),
   ),
   'metadata' =>
   array (
     'currentSeason' => 2,
     'activeLegend' => 'legend_3',
     'activeLegendName' => 'Caustic',
   ),
   'segments' =>
   array (
     0 =>
     array (
       'type' => 'overview',
       'attributes' =>
       array (
       ),
       'metadata' =>
       array (
         'name' => 'Lifetime',
       ),
       'expiryDate' => '2020-07-18T07:53:15.3144433+00:00',
       'stats' =>
       array (
         'level' =>
         array (
           'rank' => NULL,
           'percentile' => NULL,
           'displayName' => 'Level',
           'displayCategory' => 'Combat',
           'category' => NULL,
           'metadata' =>
           array (
           ),
           'value' => 161.0,
           'displayValue' => '161',
           'displayType' => 'Unspecified',
         ),
         'kills' =>
         array (
           'rank' => NULL,
           'percentile' => NULL,
           'displayName' => 'Kills',
           'displayCategory' => 'Combat',
           'category' => NULL,
           'metadata' =>
           array (
           ),
           'value' => 42.0,
           'displayValue' => '42',
           'displayType' => 'Unspecified',
         ),
         'rankScore' =>
         array (
           'rank' => NULL,
           'percentile' => 84.0,
           'displayName' => 'Rank Score',
           'displayCategory' => 'Game',
           'category' => NULL,
           'metadata' =>
           array (
             'iconUrl' => 'https://trackercdn.com/cdn/apex.tracker.gg/ranks/silver3.png',
             'rankName' => 'Silver 3',
           ),
           'value' => 1754.0,
           'displayValue' => '1,754',
           'displayType' => 'Unspecified',
         ),
       ),
     ),
     1 =>
     array (
       'type' => 'legend',
       'attributes' =>
       array (
         'id' => 'legend_3',
       ),
       'metadata' =>
       array (
         'name' => 'Caustic',
         'imageUrl' => 'https://trackercdn.com/cdn/apex.tracker.gg/legends/caustic-tile.png',
         'tallImageUrl' => 'https://trackercdn.com/cdn/apex.tracker.gg/legends/caustic-tall.png',
         'bgImageUrl' => 'https://trackercdn.com/cdn/apex.tracker.gg/legends/caustic-concept-bg-small.jpg',
         'isActive' => true,
       ),
       'expiryDate' => '2020-07-18T07:53:15.3144433+00:00',
       'stats' =>
       array (
         'kills' =>
         array (
           'rank' => NULL,
           'percentile' => 52.0,
           'displayName' => 'Kills',
           'displayCategory' => 'Combat',
           'category' => NULL,
           'metadata' =>
           array (
           ),
           'value' => 42.0,
           'displayValue' => '42',
           'displayType' => 'Unspecified',
         ),
       ),
     ),
   ),
   'availableSegments' =>
   array (
     0 =>
     array (
       'type' => 'legend',
       'attributes' =>
       array (
       ),
       'metadata' =>
       array (
       ),
     ),
   ),
   'expiryDate' => '2020-07-18T07:53:15.3144433+00:00',
 ),
)
```