从Halo 5 API获取数据 - Laravel 5.2

时间:2016-05-01 17:56:35

标签: php json api laravel

我正在使用Halo 5 APi,我已成功从API中提取数据,例如全面杀戮或竞技场中的死亡。 为了更好地理解我是如何做到的,这里是代码。 (Shortend):

class StatsController extends Controller {


    public function index(Request $request) {

        // Validate Gamer-tag
        $this->validate($request, [
            'gamertag' => 'required|max:16|min:1',
        ]);

        // Get the Gamer-tag inserted into search bar
        $gamertag = Input::get('gamertag');


        // Get data from API
        $playerStats = $this->getPlayerStats($gamertag);
        $playerArenaArray = $this->getPlayerArenaArray($playerStats);      


        $spartanRank = json_decode($playerArenaArray['SpartanRank'], true);
        $TotalKills = json_decode($playerArenaArray['TotalKills'], true);

        return view('player.stats')
            ->with('gamertag', $gamertag)
            ->with('spartanRank', $spartanRank)
            ->with('TotalKills', $TotalKills);

    }


    /**
     * Fetch a Players stats
     *
     * @param $gamertag
     * @return mixed
     */
    protected function getPlayerStats($gamertag) {

        $client = new GuzzleHttp\Client();

        $baseURL = 'https://www.haloapi.com/stats/h5/servicerecords/arena?players=' . $gamertag;

        $res = $client->request('GET', $baseURL, [
            'headers' => [
                'Ocp-Apim-Subscription-Key' => 'MY SECRET KEY HERE'
            ]
        ]);

        if ($res->getStatusCode() == 200) {
            return $result = json_decode($res->getBody());
        } elseif ($res->getStatusCode() == 404) {
            return $result = redirect()->route('/');
        }

        return $res;
    }



    /**
     * Get a users stats
     *
     * @param $playerStats
     * @return array
     */
    protected function getPlayerArenaArray($playerStats) {

        $array = [];

        $array['SpartanRank'] = $playerStats->Results[0]->Result->SpartanRank;
        $array['TotalKills'] =  $playerStats->Results[0]->Result->ArenaStats->TotalKills;

        return $array;

    }


}

但我坚持认为我必须获取特定播放列表的数据: 因此,如果我想获取特定播放列表的数据,我必须指定播放列表ID。

以下是我从Halo 5 API网站发出的示例调用: Halo 5 API call for Arena Playlist

我发送了一个帖子到Halo论坛寻求帮助。 这是帖子Halo 5 Post

My Question regarding Halo 5 API 我得到了一个人的回复,但我不知道如何实现这种回应。 以下是回复:

  

听起来你只是一个小小的误解或学习PHP。您的第一行只是数组和对象表示法的混合。所以你正在玩#34;在$ playerStats变量中给我一个Result数组。在Result数组中,给我第一个元素([0])。然后只需进入结果 - > ArenaStats - > TotalGamesWon。

     

为什么这对你的下面的方法不起作用是因为有   多个竞技场播放列表。此时,您可以对这些进行循环   播放列表并检查PlaylistId以查找您正在查找的内容   用于并返回该播放列表。播放列表从不显示相同的内容   订单,这样你就不能依赖数组索引。

我已尝试过所有内容,但我无法获得播放列表ID,因此我可以获取该播放列表的统计信息。也许你们在他说循环时理解他的意思。我已尝试过循环和许多其他事情。对不起,很长的帖子。

0 个答案:

没有答案