如何用GitHub v4 API(GraphQL)获取评论的各类型Reaction计数?
通过GitHub GraphQL API获取评论各类Reaction计数方案
没问题,我来帮你搞定这个需求!GitHub GraphQL API提供了非常直接的方式来获取评论的每种Reaction类型的用户计数,下面是具体实现方案:
核心思路
GitHub的IssueComment(针对Issue评论)或PullRequestReviewComment(针对PR评论)对象都包含reactions字段,我们可以通过groupBy: REACTION_TYPE来按反应类型分组,一次性获取所有8种类型的计数,不用逐个查询,效率很高。
针对Issue评论的查询示例
假设你要查询某个仓库中Issue的指定评论(比如你提到的#2190,这里的数字是评论的databaseId),可以用以下查询:
query GetCommentReactions { repository(owner: "你的仓库所有者", name: "仓库名称") { issue(number: 对应Issue的编号) { comment(databaseId: 2190) { body reactions(groupBy: REACTION_TYPE, orderBy: {field: CONTENT, direction: ASC}) { nodes { content users { totalCount } } } } } } }
参数说明
owner: 替换为仓库的所有者用户名(比如facebook)name: 替换为仓库名称(比如react)number: 替换为该评论所属的Issue编号databaseId: 替换为目标评论的编号(就是你看到的#2190里的2190)
针对PR评论的查询示例
如果目标评论是Pull Request里的评审评论,只需要调整查询路径即可:
query GetPRCommentReactions { repository(owner: "你的仓库所有者", name: "仓库名称") { pullRequest(number: 对应PR的编号) { comments(filter: {databaseId: 2190}) { nodes { body reactions(groupBy: REACTION_TYPE, orderBy: {field: CONTENT, direction: ASC}) { nodes { content users { totalCount } } } } } } } }
注意事项
- 权限要求: 你需要一个带有
repo权限的GitHub个人访问令牌(PAT),请求时在HTTP头中添加Authorization: bearer <你的PAT> - 返回结果: 查询返回的
reactions.nodes里,每个节点会包含content(比如THUMBS_UP)和users.totalCount(对应该反应的用户数量),正好对应你需要的8种类型的计数 - 拓展查询: 要是你还想获取每个反应的具体用户信息,可以把
users { totalCount }换成users { nodes { login } }来拿到用户登录名
内容的提问来源于stack exchange,提问作者user9469335
相关产品推荐
相关产品推荐

