2015-12-28 3 views
6

Я пытаюсь получить информацию из API данных фэнтези, используя AngularJS. Я использую $ resource для выполнения моего запроса на получение в моем контроллере, но мне не удалось выяснить, как правильно включить ключ API. Нужно ли включать его в качестве заголовка? Благодарю.AngularJS включает ключ API в запрос получения

nflApp.controller('mainController', ['$scope','$resource','$routeParams', function($scope, $resource, $routeParams) { 

$scope.fantasyAPI = $resource("https://api.fantasydata.net/nfl/v2/JSON/DailyFantasyPlayers/2015-DEC-28", { callback: "JSON_CALLBACK" }, { get: { method: "JSONP"}}); 

console.log($scope.fantasyAPI); 

}]); 

Ниже представлена ​​информация о запросе http с сайта. http request info

+0

Вам нужно отправить также ключ подписки без этой клавиши, не получив данные по api. – ZgrKARALAR

+0

@ZgrKARALAR Как правильно включить ключ подписки в свой код? –

+0

Вы можете добавить свой код $ http.defaults.headers.common ["Ocp-Apim-Subscription-Key"] = subkey; напишите свой подраздел, если вам нужна дополнительная информация, проверьте эту страницу [ссылка] (http://www.angulartutorial.net/2014/05/set-headers-for-all-http-calls-in.html) – ZgrKARALAR

ответ

1

Вы должны установить заголовок с помощью ключа API, AngularJS отправит их при каждом запросе в следующих случаях:

$http.defaults.headers.common["Ocp-Apim-Subscription-Key"] = key; 

При добавлении «.common» вы рассказываете угловой отправить это в каждом запросе так вам не нужно добавлять его к каждому ресурсу, который попадает в API.

+1

И место для установить общие заголовки обычно в методе run(). https://docs.angularjs.org/guide/module#module-loading-dependencies –

+0

Право, должно быть уточнено – FRECIA

0

Простой способ сделать это, создав свой собственный interceptors от $httpProvider на «config» fase.

Чтобы сделать это, просто написать что-то вроде:

mymodule.config(['$httpProvider', function($httpProvider){ 

$httpProvider.interceptors.push(function ($q) { 
      return { 
       'request': function (config) { 
        config.headers['Ocp-Apim-Subscription-Key'] = SomeUserClass.AuthToken(); 

        return config; 
       }, 

       'response': function (response) { 



        return response; 
       } 
      }; 
     }); 

}); 
0

Вам нужно изменить заголовок запроса в JSONP. К сожалению, это невозможно. Поскольку браузер отвечает за создание заголовков, и вы просто не можете манипулировать им при использовании метода JSONP.

how to change the headers for angularjs $http.jsonp

Set Headers with jQuery.ajax and JSONP?

С этой ссылке - https://johnnywey.wordpress.com/2012/05/20/jsonp-how-does-it-work/

Почему не использовать JSONP?
Решение о применении JSONP напрямую связано с тем, как оно работает. Прежде всего, единственным методом HTTP, который вы можете использовать, является GET, поскольку это поддержка только тегов метода. Это немедленно исключает использование JSONP в качестве опции для взаимодействия с хорошими API-интерфейсами RESTful, которые используют другие HTTP-глаголы, чтобы делать забавные вещи, такие как CRUD. И пока мы на тему GET, обратите внимание, что использование каких-либо параметров, кроме URL-адресов, для связи с сервером API (например, отправка некоторых JSON) также невозможна. (Вы можете кодировать JSON в качестве параметра URL-адреса, но позор вам даже думать об этом.)

Если они работают только с манипулированием заголовками, вам нужно будет сделать этот вызов со своей серверной части.

Смежные вопросы