如何在GitHub API中获取仓库的已关闭问题数量及总问题数?
不用遍历所有问题,直接获取GitHub仓库的已关闭/总问题数的方法
嘿,这个问题我刚好研究过!其实不用遍历所有问题就能拿到已关闭问题数或总问题数,GitHub API有两个高效的方式可以实现,完全不用挨个拉取issue列表:
1. 使用GitHub Search API
Search API支持按仓库、issue状态等条件筛选,并且会直接返回匹配结果的总数,完美解决你的需求:
- 要获取已关闭问题数,可以构造查询参数,指定仓库和issue状态为closed:
返回结果里的curl -H "Accept: application/vnd.github.v3+json" "https://api.github.com/search/issues?q=repo:nodejs/node+is:issue+is:closed"total_count字段就是该仓库的已关闭问题总数。 - 要获取总问题数,只需要去掉状态筛选,查询所有issue即可:
同样看curl -H "Accept: application/vnd.github.v3+json" "https://api.github.com/search/issues?q=repo:nodejs/node+is:issue"total_count字段,就是仓库的总issue数量(开放+已关闭)。
2. 使用GitHub GraphQL API(更推荐)
GraphQL API可以一次性获取你需要的所有统计数据,不用多次调用接口,效率更高。比如针对nodejs/node仓库,你可以构造这样的查询:
query { repository(owner:"nodejs", name:"node") { openIssues: issues(states:OPEN) { totalCount } closedIssues: issues(states:CLOSED) { totalCount } totalIssues: issues { totalCount } } }
执行这个查询后,你会直接得到三个数值:开放问题数、已关闭问题数、总问题数,完全满足需求,而且不用处理大量的issue列表数据。
补充一句:REST API的Repositories > Get接口确实只返回了open_issues_count(开放问题数),但这是因为它主要聚焦仓库的基础元数据,而issue的细分统计交给了更专门的Search和GraphQL接口来处理。
内容的提问来源于stack exchange,提问作者Fedir RYKHTIK
相关产品推荐
相关产品推荐

