Могу ли я получить статус отзыва GitHub PR через API? - PullRequest
2 голосов
/ 21 марта 2019

Я не хочу получать «состояние» обзора (например, «открыто», «закрыто»), а скорее статус (например, «утвержден»).Однако я не вижу способа сделать это через API.Он всегда возвращает пустой массив JSON, независимо от статуса.

Например, этот _should_ возвращает статус «утвержден», но ничего не возвращает:

https://github.mydomain.com/api/v3/repos/myOrg/myRepo/statuses/8675309

приводит к:

[

]

Не поддерживается ли эта операция («просмотр состояния») через API?

1 Ответ

1 голос
/ 22 марта 2019

Вы должны попробовать другой API. Согласно документации Status API GitHub,

API состояния позволяет внешним службам отмечать коммиты в состоянии error, failure, pending или success, что затем отражается в запросах на получение, связанных с этими коммитами.

Таким образом, Status API предоставляет статус каждого коммита как части PR, например, если сборка завершилась неудачно или успешно, как часть проталкивания фиксации. Приведенный ниже запрос будет возвращать статусы только как часть ссылки.

GET /repos/:owner/:repo/commits/:ref/statuses

Вам нужен API-интерфейс Reviews , где вы можете получить отзывы для PR, который будет иметь ожидаемое поле state. API - это

GET /repos/:owner/:repo/pulls/:number/reviews

И пример ответа

[
  {
    "id": 80,
    "node_id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=",
    "user": {
      "login": "octocat",
      "id": 1,
      "node_id": "MDQ6VXNlcjE=",
      "avatar_url": "https://github.com/images/error/octocat_happy.gif",
      "gravatar_id": "",
      "url": "https://api.github.com/users/octocat",
      "html_url": "https://github.com/octocat",
      "followers_url": "https://api.github.com/users/octocat/followers",
      "following_url": "https://api.github.com/users/octocat/following{/other_user}",
      "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
      "organizations_url": "https://api.github.com/users/octocat/orgs",
      "repos_url": "https://api.github.com/users/octocat/repos",
      "events_url": "https://api.github.com/users/octocat/events{/privacy}",
      "received_events_url": "https://api.github.com/users/octocat/received_events",
      "type": "User",
      "site_admin": false
    },
    "body": "Here is the body for the review.",
    "commit_id": "ecdd80bb57125d7ba9641ffaa4d7d2c19d3f3091",
    "state": "APPROVED",
    "html_url": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80",
    "pull_request_url": "https://api.github.com/repos/octocat/Hello-World/pulls/12",
    "_links": {
      "html": {
        "href": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80"
      },
      "pull_request": {
        "href": "https://api.github.com/repos/octocat/Hello-World/pulls/12"
      }
    }
  }
]

Обратите внимание, что поле state в ответе имеет искомое состояние APPROVED .

Более подробная информация об этом содержится в документации по GitHub API Обзоров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...