Github GraphQL API v4

6012 단어 GraphQLGitHub

Github GraphQL API v4는?



공식 문서
htps : //에서 ゔぇぺぺr. 기주 b. 이 m/v4/

말 그대로 GraphQL 기반 API입니다.
GraphQL에 대한 자세한 내용은 다른 게시물에서도 설명되어 있으므로, 할애합니다.

Github GraphQL API v4 사용하기



이번에는 Github에서 다양한 정보를 가져오고 싶습니다.
GraphQL을 이용할 때는
htps : //에서 ゔぇぺぺr. 기주 b. 이 m/v4/에 xpㄉ레 r/
여기에서 로그인하고 GUI 기반의 것에서 JSON을 입력하는 경우와 cURL 명령 등으로 요청하는 경우가 있습니다.
※사전에 Github의 계정으로부터, Personal access tokens 를 발행해 둘 필요가 있습니다.

다음은 특정 끌어오기 요청에 게시된 댓글을 가져옵니다.


$ curl -H "Authorization: token [発行したtoken]" -X POST -d '
> {
> "query":"query{repository(owner:\"[ユーザー名]\", name:\"[リポジトリ名]\"){pullRequest(number:1){comments(first:100){nodes{bodyText}}}}}"
> }
> ' https://api.github.com/graphql
{"data":{"repository":{"pullRequest":{"comments":{"nodes":[{"bodyText":"テストコメント1"},{"bodyText":"テストコメント2"},{"bodyText":"テストコメント3"}]}}}}}
$ 

Github GraphQL API v4의 JSON 구성을 확인하려면



htps : //로 ゔぇぺぺr. 기주 b. 이 m/v4/쿠에 ry/
이쪽을 참고로 조립해 가는데, 상당히 버릇이 굉장한 문서입니다.

먼저 예를 들어, 우선 특정 리포지토리의 정보를 알고 싶기 때문에,
repository (Repository)
Lookup a given repository by the owner and repository name.

이 녀석을 지정하고 대상을 더욱 좁혀 가므로 링크가 붙어 있는 Repository 에 액세스합니다.
GitHub Enterprise 이용시는 복수의 Organization이 있다고 생각하므로, 이쪽으로부터 파고 들어갑니다.
organization (Organization)
Lookup a organization by login.

리포지토리에서 더 조리개가 섞이는 조건이 새로 표시됩니다.
리포지토리에 등록된 끌어오기 요청에 대한 정보를 알고 싶으므로 다음에 이를 파악합니다.
※풀 요청의 번호를 지정합니다.
pullRequest (PullRequest)
Returns a single pull request from the current repository by number.

끌어오기 요청에서 더 조리개를 섞는 조건이 새로 표시됩니다.
끌어오기 요청에 대한 의견 정보를 얻고 싶다면 다음에 탐구합니다.
※ 취득하는 코멘트수를 지정합니다.
comments (IssueCommentConnection!)
A list of comments associated with the pull request.

다음으로 좁히는 조건에서는 다음을 이용합니다.
nodes -> bodyText
nodes ([IssueComment])
A list of nodes.
bodyText (String!)
The body rendered to text.

라는 느낌으로 JSON을 조립해 갑니다.

샘플



끌어오기 요청 내에서 업데이트된 파일 가져오기
{
  repository(owner: "[ユーザー名]", name: "[リポジトリ名]") {
    pullRequest(number: 1) {
      files(first: 100) {
        nodes {
          path
        }
      }
    }
  }
}

끌어오기 요청 목록(제목) 가져오기
{
  repository(owner: "[ユーザー名]", name: "[リポジトリ名]") {
    pullRequests(first: 100) {
        nodes {
        title
      }
    }
  }
}

풀 요청을 지정하는 경우는 pullRequest 로 번호를 지정합니다만, 풀 요청의 일람 정보를 취하는 경우는 pullRequests 로 지정합니다. 이 근처가 버릇이 굉장하다(라고 개인적으로) 생각하고 있습니다.
그 밖에도 정렬 순서를 지정하거나, 취득수 등을 일단 변수로 두고 변수의 값을 지정해 취득하는 방법등이 있어 좀처럼 깊은 기능입니다.

좋은 웹페이지 즐겨찾기