我正在使用名为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请你详细说明一下吗? –