You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何查询代码仓库贡献者数量?能否通过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

火山引擎 最新活动