跳转至

获取某个Pull Request的所有评论

GET /api/v5/repos/{owner}/{repo}/pulls/{number}/comments

该接口用于获取指定仓库中某个 Pull Request 的全部评论,支持按代码行评论与 PR 普通评论类型筛选,并可通过页码、每页数量和升降序参数进行分页排序,返回评论内容、发表用户、文件位置及回复列表等信息。

访问令牌支持说明

  • AtomGit 用户访问令牌(AtomGit user access tokens)

是否允许匿名访问

此接口允许匿名访问

请求参数

参数名 位置 类型 必填 说明
owner path string 是 仓库所属空间地址(组织或个人的地址path)
repo path string 是 仓库路径(path)
number path integer 是 第几个PR,即本仓库PR的序数
page query integer 否 当前的页码,默认为 1
per_page query integer 否 每页的数量,最大为 100,默认 20
direction query string 否 可选。升序/降序(asc/desc)
comment_type query string 否 可选。筛选评论类型。代码行评论/PR普通评论:diff_comment/pr_comment

响应参数

响应体为评论对象数组,每个元素的结构如下:

字段 类型 必返 可为空 说明
id integer 是 否 评论 ID
discussion_id string 是 否 讨论id
body string 是 否 评论内容
created_at string 是 否 创建时间
updated_at string 是 否 更新时间
user object 是 否 发表评论的用户信息
comment_type string 是 否 评论类型
resolved boolean 是 否 评论是否已解决
diff_file string 是 否 评论所在的文件
diff_position object 是 否 代码行评论的位置信息
reply object[] 否 是 评论的回复列表

user 对象

字段 类型 必返 可为空 说明
user.id string 是 否 用户 ID
user.login string 是 否 登录名
user.name string 是 否 用户昵称
user.avatar_url string 是 否 用户头像地址
user.html_url string 是 否 用户主页地址

diff_position 对象

字段 类型 必返 可为空 说明
diff_position.start_new_line integer 否 是 新文件中的起始行号
diff_position.end_new_line integer 否 是 新文件中的结束行号
diff_position.start_old_line integer 否 是 旧文件中的起始行号
diff_position.end_old_line integer 否 是 旧文件中的结束行号
diff_position.position_type string 否 是 位置类型:binary 表示文件级评论,text 表示代码行评论

reply 对象(数组元素)

字段 类型 必返 可为空 说明
reply.id integer 否 是 回复 ID
reply.body string 否 是 回复内容
reply.created_at string 否 是 回复创建时间
reply.updated_at string 否 是 回复更新时间
reply.user object 否 是 回复用户信息

reply.user 对象

字段 类型 必返 可为空 说明
reply.user.id string 否 是 用户 ID
reply.user.login string 否 是 登录名
reply.user.name string 否 是 用户昵称
reply.user.avatar_url string 否 是 用户头像地址
reply.user.html_url string 否 是 用户主页地址

失败响应

只有 200/成功响应是不够的:调用方需要知道失败长什么样才能写错误处理。

400 参数错误

{
  "error": "invalid_request",
  "message": "参数 number 不能为空",
  "field": "number"
}

401 未认证

{
  "error": "unauthorized",
  "message": "缺少或无效的访问令牌"
}

Note: 错误字段名以后端实际返回为准,参考文档未提供更多失败响应示例。

HTTP 响应状态码

状态码 说明
200 成功(OK)
304 未修改(Not modified)
400 参数错误(Bad request)
401 需要认证(Requires authentication)
403 禁止访问(Forbidden)
404 资源不存在(Not found)
429 请求过于频繁(Too many requests)
500 系统内部错误(Internal server error)

请求示例

参数说明

本接口允许匿名访问,无需携带访问令牌;如需认证,也可在请求中追加 ?access_token=<token>。

<owner> 替换为仓库所属空间地址(组织或个人的地址 path);<repo> 替换为仓库路径(path);<number> 替换为第几个 PR,即本仓库 PR 的序数。

cURL

curl -X GET 'https://api.atomgit.com/api/v5/repos/<owner>/<repo>/pulls/<number>/comments?page=1&per_page=20&direction=asc&comment_type=diff_comment' \
  -H 'Accept: application/json'

JavaScript

// 原生 fetch (Node.js 18+ / 浏览器)
const response = await fetch("https://api.atomgit.com/api/v5/repos/<owner>/<repo>/pulls/<number>/comments?page=1&per_page=20&direction=asc&comment_type=diff_comment", {
  headers: {
    "Accept": "application/json",
  },
});

if (!response.ok) {
  throw new Error(`请求失败: ${response.status}`);
}

const data = await response.json();
console.log(data);

Python

import requests

resp = requests.get(
    "https://api.atomgit.com/api/v5/repos/<owner>/<repo>/pulls/<number>/comments",
    params={
        "page": 1,
        "per_page": 20,
        "direction": "asc",
        "comment_type": "diff_comment",
    },
    headers={
        "Accept": "application/json",
    },
    timeout=10,
)
resp.raise_for_status()

print(resp.json())

响应示例

状态码: 200

[
  {
    "id": 100,
    "discussion_id": "de772738e6dab92174c0e86c052ccf9bed24f747",
    "body": "111",
    "created_at": "2024-04-19T07:48:59.755+00:00",
    "updated_at": "2024-04-19T07:48:59.755+00:00",
    "user": {
      "id": "708",
      "login": "Lzm_0916",
      "name": "Lzm_0916",
      "avatar_url": "https://api.atomgit.com/avatar.png",
      "html_url": "https://api.atomgit.com/Lzm_0916"
    },
    "comment_type": "diff_comment",
    "resolved": true,
    "diff_file": "src/main/java/Example.java",
    "diff_position": {
      "start_new_line": 10,
      "end_new_line": 12,
      "start_old_line": 0,
      "end_old_line": 0,
      "position_type": "text"
    },
    "reply": [
      {
        "id": 101,
        "body": "已修改",
        "created_at": "2024-04-19T08:00:00.000+00:00",
        "updated_at": "2024-04-19T08:00:00.000+00:00",
        "user": {
          "id": "709",
          "login": "octocat",
          "name": "octocat",
          "avatar_url": "https://api.atomgit.com/avatar.png",
          "html_url": "https://api.atomgit.com/octocat"
        }
      }
    ]
  }
]

错误码

错误码 说明
400 参数错误或请求无法解析
401 未认证或凭证无效(缺少/无效的访问凭证)
403 权限不足,禁止访问
404 请求路径不存在
429 请求过于频繁,触发限流
500 系统内部错误

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 gitcode-dev/atomgit-api-doc