如何用GitHub API获取ropensci/drake指定标签的全部Issue(含已关闭)
解决GitHub API获取指定标签+全状态Issue的问题
别担心,我一步步教你怎么修改查询,完全适合初学者复用~
首先,GitHub API获取仓库Issue的核心端点是 /repos/{owner}/{repo}/issues,你需要在这个URL后面添加两个关键参数:labels(指定你要的标签)和state(指定Issue状态),参数之间用&分隔。
直接可用的API请求示例
用curl命令(复制就能跑)
curl "https://api.github.com/repos/ropensci/drake/issues?labels=Frequently%20Asked%20Question&state=all"
用Python requests库(适合脚本调用)
import requests # 基础API地址 url = "https://api.github.com/repos/ropensci/drake/issues" # 定义查询参数 params = { "labels": "Frequently Asked Question", # 标签名称直接写带空格的就行,requests会自动处理URL编码 "state": "all" # 可选值:open(默认)、closed、all,选all就包含已关闭的Issue } # 发送请求 response = requests.get(url, params=params) # 解析返回的JSON数据 issues = response.json() # 可以打印第一条Issue的标题验证结果 if issues: print(issues[0]["title"])
参数位置的详细说明
你之前的查询应该只加了labels参数,比如:
https://api.github.com/repos/ropensci/drake/issues?labels=Frequently%20Asked%20Question
要添加state参数,只需要在**第一个参数后面加&,然后跟上state=all**就行。这里的规则很简单:
- URL中
?是参数的起始标记 - 多个参数用
&分隔 state=all就是告诉API返回所有状态的Issue(开放+已关闭)
几个新手注意点
- 标签名称要完全匹配:比如如果仓库里的标签是缩写或者大小写不同(比如
FAQ),要改成对应的名称,否则会查不到结果 - 速率限制:未登录状态下GitHub API每小时只能请求60次,如果遇到
403错误,可以考虑生成一个个人访问令牌(PAT)放在请求头里,提升请求限额 - 分页处理:如果符合条件的Issue超过30条,API会自动分页,你需要根据返回头里的
Link字段获取下一页的地址,继续请求才能拿到全部数据
内容的提问来源于stack exchange,提问作者landau
相关产品推荐
相关产品推荐

