我正在使用名爲node-github的NodeJS模塊,它是圍繞Github API的封裝,以獲取有關某些用戶的某些統計信息,例如他們的追隨者:正確的方法從使用鏈接標頭的API獲取所有頁面(使用JavaScript/NodeJS)
var getFollowers = function(user, callback) {
github.user.getFollowers(user, function(err, res) {
console.log("getFollowers", res.length);
callback(err, res);
});
};
...
getFollwers({user: mike}, function(err, followers) {
if(err) {
console.log(err);
}
else {
console.log(followers);
}
});
顯然,Github上限制通話效果爲最大的100(通過per_page
參數),並利用the Link header讓你知道一個「下一頁」結果的存在。
我使用的模塊提供了幾種簡單的方法來處理鏈接標題,因此您不需要解析它。基本上,你可以打電話github.hasNextPage(res)
或github.getNextPage(res)
(其中res
是你從原來的github.user.getFollowers()
呼叫收到的響應)
我正在尋找的是正確的方法/範式將我的函數返回所有結果,包括所有頁面。我用遞歸函數嘗試了一下,儘管它有效,但我不禁感覺可能會有更好的方法。
這個答案可以作爲一個很好的方法來處理所有未來的鏈接標題調用 - 不只是Github的 - 如果標準着手。
謝謝!
你有沒有考慮建立發射追隨者定製可讀流? – AndyD
@AndyD請你詳細說明一下嗎? –