2016-09-14 7 views
2

私はtwitch.tv apiを使用し、Angular $リソースファクトリを使用しています。私が使用しようとしているエンドポイントは、GET/channels /:channelです。私がしようとしているのは、各配列要素のチャンネルを取得することです。私は/ channels/users [1]を試しましたが、これは間違っていると私は知っています。アレイ内のすべてのユーザーに対して:チャネルを取得するにはどうすればよいですか?それとももっと良い方法がありますか?単収縮のAPIは、CORS要求をサポートよう

(function() { 
     angular.module('twitch', ['ngResource']) 

     .controller('TwitchController', ['$scope', 'TwitchAPI', function($scope, TwitchAPI) { 
     $scope.getAPI = function(){ 
      var users = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"]; 
      for(var i = 0; i < 8; i++){ 
      TwitchAPI.get({channel: users.i}); 
     } 
     } 
     $scope.online = []; 
     $scope.offline = []; 


    }]) 

    .factory('TwitchAPI', function TwitchAPIFactory($resource){ 
    return $resource('https://api.twitch.tv/kraken/channels/:channel', { callback: "JSON_CALLBACK" }); 
    }); 
})(); 

答えて

0

まず、あなたはあなたの$resource「そう

return $resource('https://api.twitch.tv/kraken/channels/:channel', {}, { 
    get: { 
     method: 'GET', 
     headers: { 
      Accept: 'application/vnd.twitchtv.v3+json', 
      'Client-ID': 'Your client ID' 
     } 
    } 
}) 

あなたが本当にJSONPを使用したい場合は、あなたができるように構成することができ、JSONPを使用する必要はありませんそれはトイレません

return $resource('https://api.twitch.tv/kraken/channels/:channel', { 
    callback: 'JSON_CALLBACK', 
    api_version: 3, 
    client_id: 'your client ID' 
}, { 
    get: { 
     method: 'JSONP' 
    } 
}) 

のように見えなければならないので、tはリクエストのヘッダ情報を送ります一度に複数のチャネル(参照:https://github.com/justintv/Twitch-API/blob/master/v3_resources/channels.md)を取得する方法がありますようにk個が、あなたはあなたがこの

var promises = users.map(user => TwitchAPI.get({channel: user}).$promise); 

のような約束の単純な配列を作成することができ、並列

で行うことができるはずですあなたは、それからちょうど$qサービスを注入することを忘れないでください$q.all

$q.all(promises).then(channels => { 
    angular.forEach(channels, channel => { 
     // access each channel's properties here 
     console.log('Channel name:', channel.display_name); 
    }); 
}); 

を使用して解決するために、すべての約束のために待つことができます。

+0

ありがとうございます!私はまだAngularを学んでいますので、あなたの解決策を試してみましょう。 – labanch

+0

実際にAPIからデータを取得するにはどうすればよいですか?それは次のようなものでしょう:user.url? @Phil – labanch

+0

@labanch申し訳ありませんが、私は質問を理解していません。各要求からの応答は、 'angular.forEach'ループで使用される' channel'変数で利用可能でなければなりません。これは次のようになります〜https://github.com/justintv/Twitch-API/blob/master/v3_resources/channels.md#get-channelschannel – Phil

関連する問題