如何通过GitHub API获取为Pull Request添加标签的用户?API文档未找到相关内容是否存在遗漏?
获取GitHub PR标签添加者的用户数据方法
别慌,其实GitHub API确实有办法拿到给PR添加标签的用户数据,只是它不在标签列表的接口里,而是藏在事件日志相关的端点中——毕竟标签的添加属于PR的操作事件,得从操作记录里找。
下面给你两种具体实现方式:
1. 直接获取单个PR的标签操作事件
如果你只需要查某一个PR的标签添加记录,用这个端点就够了:
GET /repos/{owner}/{repo}/pulls/{pull_number}/events
这个接口会返回该PR所有的操作事件(比如评论、合并、加标签等),你只需要筛选出type为LabeledEvent的条目,里面的actor字段就是添加对应标签的用户完整数据,包括登录名、ID、头像地址等。
举个响应片段的例子:
{ "id": "1234567890", "type": "LabeledEvent", "actor": { "login": "octocat", "id": 583231, "avatar_url": "https://avatars.githubusercontent.com/u/583231?v=4", "html_url": "https://github.com/octocat" }, "payload": { "label": { "name": "enhancement", "color": "a2eeef" } }, "created_at": "2024-05-20T15:42:30Z" }
你可以遍历返回的事件数组,把所有LabeledEvent挑出来,每个条目对应一次标签添加操作,actor就是操作人,payload.label就是被添加的标签信息。
2. 从仓库事件中批量筛选PR标签操作
如果你需要批量查看仓库里多个PR的标签添加记录,可以用仓库事件接口:
GET /repos/{owner}/{repo}/events
返回的事件里,同样找type为LabeledEvent的条目,并且这些条目里的payload.pull_request字段会关联对应的PR信息(比如PR编号),通过这个字段就能定位到具体是哪个PR的标签操作,actor依然是操作用户的数据。
注意事项
- 事件接口有分页限制,默认每页30条,你可以通过
page和per_page参数翻页,或者处理响应头里的Link字段来自动分页。 - 如果一个PR被添加过多个标签,每个标签的添加都会生成一条独立的
LabeledEvent,所以你能精准拿到每个标签的添加者。 - 私有仓库需要你有对应的访问权限(比如仓库成员权限)才能获取这些事件数据,公开仓库则无特殊限制。
内容的提问来源于stack exchange,提问作者Khaled Sulayman




