如何使用GitHub API无需遍历项目卡片即可获取关联指定issue的卡片ID
通过Issue编号获取关联项目卡片ID的最优实现方案
方案1:REST API 直接拉取Issue关联信息
调用Issue详情接口 GET /repos/{owner}/{repo}/issues/{issue_number},返回体自带project_items数组:
- 数组内每个元素对应该Issue绑定的一张项目卡片,可直接获取
id字段作为操作所需的卡片ID - 若单Issue绑定了多项目的卡片,可通过
project字段下的项目ID筛选目标项目对应的卡片即可 - 无需遍历任何项目栏目下的卡片,仅需1次请求即可拿到结果,是当前最简洁的实现方式
方案2:GraphQL API 精简查询
如果需要压缩返回数据量、提升请求效率,可使用GraphQL接口构造定向查询,请求示例:
query($owner: String!, $repo: String!, $issueNum: Int!) { repository(owner: $owner, name: $repo) { issue(number: $issueNum) { projectItems(first: 10) { nodes { id project { id title } column { id name } } } } } }
返回结果仅包含你指定的字段,没有冗余信息,适合批量操作的场景。
原有遍历方案的优化建议
如果你的使用场景限制无法访问仓库Issue级别的接口,只能使用项目维度接口,可以对原有遍历方案做以下优化:
- 调用
GET /projects/columns/{column_id}/cards时增加content_type=Issue参数,过滤掉非Issue类型的卡片,减少遍历数据量 - 优先遍历Issue当前所在的栏目,无需遍历项目下所有栏目,降低请求次数
内容的提问来源于stack exchange,提问作者nmajor
相关产品推荐
相关产品推荐

