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

如何通过GitHub API获取为Pull Request添加标签的用户?API文档未找到相关内容是否存在遗漏?

获取GitHub PR标签添加者的用户数据方法

别慌,其实GitHub API确实有办法拿到给PR添加标签的用户数据,只是它不在标签列表的接口里,而是藏在事件日志相关的端点中——毕竟标签的添加属于PR的操作事件,得从操作记录里找。

下面给你两种具体实现方式:

1. 直接获取单个PR的标签操作事件

如果你只需要查某一个PR的标签添加记录,用这个端点就够了:

GET /repos/{owner}/{repo}/pulls/{pull_number}/events

这个接口会返回该PR所有的操作事件(比如评论、合并、加标签等),你只需要筛选出typeLabeledEvent的条目,里面的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

返回的事件里,同样找typeLabeledEvent的条目,并且这些条目里的payload.pull_request字段会关联对应的PR信息(比如PR编号),通过这个字段就能定位到具体是哪个PR的标签操作,actor依然是操作用户的数据。

注意事项

  • 事件接口有分页限制,默认每页30条,你可以通过pageper_page参数翻页,或者处理响应头里的Link字段来自动分页。
  • 如果一个PR被添加过多个标签,每个标签的添加都会生成一条独立的LabeledEvent,所以你能精准拿到每个标签的添加者。
  • 私有仓库需要你有对应的访问权限(比如仓库成员权限)才能获取这些事件数据,公开仓库则无特殊限制。

内容的提问来源于stack exchange,提问作者Khaled Sulayman

火山引擎 最新活动