如何通过GitHub REST API获取Pull Request中Conversation栏的评论?
搞定GitHub API获取PR「Conversation」评论的问题
先明确GitHub Pull Request里的两类评论:
- Files changed里的代码行评论:你用
GET /repos/{owner}/{repo}/pulls/{pull_number}/comments已经能拿到,这类是针对具体代码行的review评论。 - Conversation标签下的评论:包含PR的初始描述、直接回复的评论,还有提交review时写的整体评价,得分两种情况获取:
1. 获取普通评论(PR的issue评论)
用GET /repos/{owner}/{repo}/issues/{pull_number}/comments接口就行——因为GitHub的PR本身就是一个issue,PR编号和issue编号完全一致,所以这里的{pull_number}直接填你的PR ID即可。
如果之前调用这个接口没拿到内容,检查这几点:
- 路径是否完整:必须带上仓库所有者和仓库名称,比如
GET /repos/octocat/hello-world/issues/123/comments,不能只写/issues/{id}/comments - 权限是否足够:私有仓库必须携带拥有
repo权限的GitHub Token,否则会返回403或空数组 - 评论类型是否匹配:如果Conversation里的评论是review的整体评价,这个接口拿不到,得用下面的接口
2. 获取Review的整体评论
如果是提交review时写的整体评价(不是代码行上的评论),得调用GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews,每个返回的review对象里的body字段就是对应的整体评论内容,这类内容也会显示在Conversation标签下。
凑齐所有Conversation评论的方法
把上面两个接口的结果合并即可:普通评论直接取issues/comments的返回内容,review整体评论从pulls/reviews里提取body非空的条目,两者结合就是Conversation标签下的全部评论。
内容的提问来源于stack exchange,提问作者jean553
相关产品推荐
相关产品推荐

