2013-01-05 3 views
6

Ich benutze Github API für eine kleine Web-App und irgendwann muss ich link header für the pagination bekommen.Github API bekomme die Link-Header mit Ajax

Das endgültige Ziel ist es, die Gesamtzahl der Commits pro Repository zu bekommen, fand ich, dass python script und versuchte, es an JavaScript anzupassen.

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 und repo jeweils den Benutzernamen und sein Repo-Name

Es ist für eine Github Seite ist, damit ich nur JavaScript verwenden können.

Antwort

5

Siehe die API-Dokumentation GitHub für die Verwendung von JSONP Rückrufe: http://developer.github.com/v3/#json-p-callbacks

Grundsätzlich, wenn Sie JSONP verwenden die API aufrufen, dann werden Sie keine Link Header erhalten, aber Sie werden stattdessen die gleichen Informationen bekommen in der Antwort JSON Dokument (dh der Körper). Unten ist das Beispiel aus der API-Dokumentation, in dem Objekt meta die Link Eigenschaft bemerken

$ 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

, die perfekt ist, dank –

0

Die Signatur für die Funktion, die Sie die getJSON Methode übergeben sind Typ: Funktion (PlainObject Daten, String textStatus, jqXHR jqXHR)

an den Bindungskopf greifen Sie auf das jqXHR Objekt anstelle des Datenobjekts verwendet werden soll:

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 
    }); 
Verwandte Themen