2015-12-28 6 views
6

मैं AngularJS का उपयोग कर एक फंतासी डेटा एपीआई से जानकारी प्राप्त करने का प्रयास कर रहा हूं। मैं अपने नियंत्रक में अपना अनुरोध करने के लिए $ संसाधन का उपयोग कर रहा हूं, लेकिन मैं यह समझने में सक्षम नहीं हूं कि एपीआई कुंजी को सही तरीके से कैसे शामिल किया जाए। क्या मुझे इसे हेडर के रूप में शामिल करने की आवश्यकता है? धन्यवाद।एंगुलरजेएस में अनुरोध प्राप्त करने में एपीआई कुंजी शामिल है

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

आपको उस कुंजी के बिना सदस्यता कुंजी भी भेजने की आवश्यकता है, जो संभव नहीं है एपीआई पर डेटा प्राप्त करें। – ZgrKARALAR

+0

@ZgrKARALAR मैं अपने कोड में सदस्यता कुंजी को सही तरीके से कैसे शामिल करूं? –

+0

आप अपना कोड $ http.defaults.headers.common ["ओसीपी-अपिम-सदस्यता-कुंजी"] = उपकुंजी जोड़ सकते हैं; अगर आपको अधिक जानकारी चाहिए तो अपनी उपकुंजी लिखें [लिंक] (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' आप ऐसा हर अनुरोध में भेजने के लिए कह रहे हैं कोणीय आपको एपीआई को हिट करने वाले हर संसाधन में इसे जोड़ने की आवश्यकता नहीं है।

+1

और जगह आम हेडर सेट आमतौर पर रन() विधि में होता है। https://docs.angularjs.org/guide/module#module-loading- निर्भरता –

+0

सही, स्पष्ट होना चाहिए था – FRECIA

0

ऐसा करने के लिए एक आसान तरीका "config" fase में अपनी खुद की interceptors$httpProvider से बनाने के द्वारा है।

कि ऐसा करने के लिए, बस की तरह कुछ लिखें:

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 विधि है क्योंकि यह एकमात्र तरीका स्क्रिप्ट टैग समर्थन है। यह तुरंत JSONP के उपयोग को अच्छे रीस्टफुल एपीआई के साथ बातचीत करने के विकल्प के रूप में समाप्त करता है जो सीआरयूडी जैसे मजेदार सामान करने के लिए अन्य HTTP क्रियाओं का उपयोग करता है। और जब हम जीईटी के विषय पर हैं, ध्यान दें कि सर्वर एपीआई (उदा। कुछ JSON ओवर भेजना) के साथ संवाद करने के लिए यूआरएल पैरामीटर के अलावा किसी अन्य चीज का उपयोग करना भी संभव नहीं है। (आप जेएसओएन को यूआरएल पैरामीटर के रूप में एन्कोड कर सकते हैं, लेकिन आपको यह सोचने के लिए शर्मिंदा भी हो सकता है।)

यदि वे केवल हेडर मैनिपुलेशन के साथ काम करते हैं तो आपको अपने सर्वर की ओर से उस कॉल को करने की आवश्यकता होगी।

संबंधित मुद्दे