如何查询代码仓库贡献者数量?能否通过GitHub API获取该数据?
查询代码仓库贡献者数量的方法
我来帮你解答这个问题,查询代码仓库的贡献者数量有几种方式,不管是网页端还是通过GitHub API都能实现,具体如下:
网页端直接查看
这是最直观的方式:打开目标仓库的GitHub主页,往下滚动页面,找到「Contributors」板块,就能直接看到显示的贡献者总数,比如你提到的nodejs/node仓库,主页上就清晰标注了这个数字。
通过GitHub API查询贡献者数量
你说得没错,GitHub的REST API主仓库接口(比如/repos/nodejs/node)确实没有直接返回贡献者总数的字段,但我们可以通过其他API接口来获取:
方式1:使用REST API计算数量
发送请求到贡献者列表接口GET /repos/{owner}/{repo}/contributors,可以通过以下技巧高效获取总数:
- 加上参数
per_page=1,这样接口只返回1条贡献者数据,减少响应内容的大小 - 查看响应头中的
Link字段,里面会包含最后一页的页码信息,比如类似这样的内容:<https://api.github.com/repositories/xxxx/contributors?page=123&per_page=1>; rel="last" - 这里的
123就是总页数,因为每页只返回1条数据,所以总贡献者数就近似等于这个页码(如果最后一页不满1条,差距可以忽略)
如果需要包含匿名贡献者,记得在请求里加上anon=true参数。举个curl命令的例子:
curl -I https://api.github.com/repos/nodejs/node/contributors?per_page=1
方式2:使用GraphQL API直接获取精确总数
相比REST API,GitHub的GraphQL API可以直接返回贡献者的精确总数,效率更高。你可以构造这样的查询语句:
query { repository(owner: "nodejs", name: "node") { contributors(first: 0) { totalCount } } }
这里first: 0表示不需要返回具体的贡献者列表,只获取总数。用curl发送请求的示例如下(记得替换YOUR_GITHUB_TOKEN为你的个人访问令牌,公共仓库查询也可以省略令牌,但会有请求次数限制):
curl -H "Authorization: token YOUR_GITHUB_TOKEN" -X POST -d '{"query":"query { repository(owner: \"nodejs\", name: \"node\") { contributors(first: 0) { totalCount } } }"}' https://api.github.com/graphql
内容的提问来源于stack exchange,提问作者Fedir RYKHTIK




