GitHub API:如何有效地获得每个存储库的总贡献者数量?

Fra*_*rzi 4 github-api

有没有办法使用 GitHub API 有效地获取 GitHub 存储库的所有不同贡献者的数量?

我的意思是,不一定要获取所有贡献者对象并手动计算总量。

小智 11

是的,诀窍是请求贡献者列表,每页包含一个项目。但包含 anon=true 作为查询参数以包含匿名贡献者

https://api.github.com/repos/:owner/:repo/contributors?per_page=1&anon=true
Run Code Online (Sandbox Code Playgroud)

在响应标头中(就像之前的答案中提到的那样),查找 Link 属性并获取之前的值rel="last"


Fra*_*rzi 5

解决方案可能是使用分页

当我们使用分页时,我们会根据我们请求的每页项目的数量(使用参数)在Response Header 中获取有关页面总数的一些信息per_page

所以一个技巧可能是请求贡献者列表,每页一个项目:

https://api.github.com/repos/:owner/:repo/contributors?per_page=1
Run Code Online (Sandbox Code Playgroud)

在我们的 Response Header 中执行此操作将有一个Link包含以下内容的属性:

链接:https : //api.github.com/repositories/ID/contributors?per_page=1&page=2 ; rel="next", https://api.github.com/repositories/ID/contributors?per_page=1&page=XXXXXXXX ; rel="最后"

XXXXXXXX 值,之前rel="last"将是页面总数,但由于我们每页请求一个项目,它也是贡献者的总数。

  • 如果它工作会很酷,但例如,对于 URL https://api.github.com/repos/tensorflow/tensorflow/contributors?per_page=1,它最后显示为 370,但 tensorflow 网页显示更多超过 1600 名贡献者。 (2认同)