从API获取所有使用链接头的页面的正确方法(使用JavaScript/NodeJS)

从API获取所有使用链接头的页面的正确方法(使用JavaScript/NodeJS),javascript,node.js,github-api,node-github,link-header,Javascript,Node.js,Github Api,Node Github,Link Header,我正在使用一个名为NodeJS的模块,它是一个围绕的包装器,用于获取某些用户的统计信息,例如他们的追随者: var getFollowers = function(user, callback) { github.user.getFollowers(user, function(err, res) { console.log("getFollowers", res.length); callback(err, res); }); }; ... getFollwers(

我正在使用一个名为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
参数),并利用此参数让您知道存在“下一页”结果

我使用的模块提供了几个简单的方法来处理链接头,因此您不需要解析它。基本上,您可以调用
github.hasNextPage(res)
github.getNextPage(res)
(其中
res
是您从原始
github.user.getFollowers()调用中收到的响应)

我要寻找的是让我的函数返回所有结果(包括所有页面)的正确方法/范例。我尝试了一点递归函数,虽然它可以工作,但我还是忍不住觉得可能有更好的方法

如果这个标准流行起来,这个答案可以作为一个很好的方法来处理所有未来的链接头调用——不仅仅是Github的


谢谢

最后,求助于递归(记住递归的两大弱点:维护和解释:)。如果有人感兴趣,以下是我当前的代码:

var getFollowers = function(callback) {
  var followers = []
  ,  getFollowers = function(error, result) {
      followers = followers.concat(result);
      if(github.hasNextPage(result)) {
        github.getNextPage(result, getFollowers);
      }
      else {
        callback(error, followers);
      }
    };              

  github.user.getFollowers(options, getFollowers);
};
但是,我发现如果你只需要关注者的总数,你可以使用getLastPage函数来获取最后一页的关注者数量,然后


total_num_of_followers=num_followers_on_last_page+(total_num_of_pages*每页结果)

您是否考虑过创建一个自定义可读流来发送关注者?@您能详细说明一下吗?