GraphQL查询Pull Request审批用户团队名称为空,如何解决或改用REST?
获取PR审批用户所属团队名称的解决方案
关于onBehalfOf返回空的原因
onBehalfOf字段仅适用于用户代表团队发起审批的场景,普通个人审批不会返回任何数据,所以你当前的查询结果是空数组属于正常情况。
GraphQL API正确查询方式
要获取审批用户的所属团队,需从author节点入手,查询用户在目标组织下的团队列表。修改后的查询语句如下:
query { repository(name: "test", owner: "example") { pullRequest(number: 2) { reviews(first: 100, states: APPROVED) { nodes { author { ... on User { avatarUrl login resourcePath url # 查询用户在组织example下的所有可见团队 organization(login: "example") { teams(first: 100) { nodes { name } } } } } } } } } }
这里通过... on User做类型分片(因为author可能是User或Bot等类型),直接查询用户在目标组织下的团队列表。
REST API是否更简便?
REST API的实现分为两步:
- 调用
GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews获取所有已批准的审批记录,提取每个审批者的login。 - 对每个
login调用GET /users/{username}/teams,获取该用户所属的所有团队(仅返回当前授权可见的团队)。
两种方式的对比:
- GraphQL支持单次查询获取所有数据,减少网络请求次数;
- REST API的接口逻辑更直白,无需处理GraphQL的类型分片,但需要发起多轮请求。
如果审批用户数量较少,REST API的开发成本更低;如果需要批量获取数据,GraphQL的效率更高。
内容的提问来源于stack exchange,提问作者harry1102
相关产品推荐
相关产品推荐

