2013-01-05 11 views
6

के साथ लिंक हेडर प्राप्त करता है मैं एक छोटे से वेब ऐप के लिए जिथब एपीआई का उपयोग कर रहा हूं और किसी बिंदु पर मुझे के लिए link header प्राप्त करने की आवश्यकता है।गीथब एपीआई एजेक्स

अंतिम लक्ष्य प्रति भंडार की कुल संख्या प्राप्त करना है, मैंने पाया कि python script और इसे जावास्क्रिप्ट में अनुकूलित करने का प्रयास किया।

getData = $.getJSON('https://api.github.com/repos/'+user+'/'+repo+'/commits?callback=?', function (commits){ 

    console.log(getData.getResponseHeader('link')) 
    // will return null 

    console.log(getData.getAllResponseHeaders('link')) 
    // will return an empty string 

    console.log(commits) 
    // will successfuly return my json 
}); 

user और repo क्रमशः उपयोगकर्ता नाम और उसके रेपो नाम

यह एक Github पेज के लिए है, इसलिए मैं केवल जावास्क्रिप्ट का उपयोग कर सकते हैं।

उत्तर

5

JSONP कॉलबैक का उपयोग करके के लिए GitHub एपीआई डॉक्स देखें: http://developer.github.com/v3/#json-p-callbacks

मूल रूप से, अगर आप एपीआई कॉल करने के लिए JSONP का उपयोग कर रहे हैं, तो आप एक Link हैडर नहीं मिलेगा, लेकिन आप के बजाय एक ही जानकारी मिल जाएगी प्रतिक्रिया में JSON दस्तावेज़ (यानी शरीर)। समारोह (PlainObject डेटा, स्ट्रिंग textStatus, jqXHR jqXHR): नीचे एपीआई डॉक्स से उदाहरण है, meta वस्तु में नोटिस Link संपत्ति

$ curl https://api.github.com?callback=foo 

foo({ 
    "meta": { 
    "status": 200, 
    "X-RateLimit-Limit": "5000", 
    "X-RateLimit-Remaining": "4966", 
    "Link": [ // pagination headers and other links 
     ["https://api.github.com?page=2", {"rel": "next"}] 
    ] 
    }, 
    "data": { 
    // the data 
    } 
}) 
+0

एकदम सही है कि, धन्यवाद –

0

समारोह आप getJSON विधि को पारित करने के लिए हस्ताक्षर प्रकार है

लिंक हैडर आप डेटा वस्तु के स्थान पर jqXHR वस्तु का उपयोग करना चाहिए पहुंचने के लिए:

getData = $.getJSON(
    'https://api.github.com/repos/'+user+'/'+repo+'/commits?callback=?', 
    function (data, textStatus, jqXHR){ 

     console.log(jqXHR.getResponseHeader('Link')) 
     // will return the Header Link 

     console.log(commits) 
     // will successfuly return my json 
    });