GiitHub GraphiQL API로 한 번에 모든 정보 얻기

3509 단어 GitHubAPI
이 글은 Akatsuki Advent Calendar 2018 열흘째 되는 글이다.
계기.
GiitHub에서 임의의 정보를 추출할 때 스크립트를 만들어 REST API를 여러 차례 수행했지만 GraphiQL API는 간단하게 원하는 정보를 얻을 수 있기 때문에 실제로 접한 내용을 적는다.
이번에는 이런 느낌을 잡아서 쓸 수 있을까 하는 생각으로 써보는 중심으로 진행됐다.
GraphiQL API 사용 방법
GiitHub GraphiQL API는 Explorer를 통해 간단히 수행할 수 있습니다.
https://developer.github.com/v4/explorer/
화면은 이렇다. 왼쪽에 실행하고 싶은 GraphiQL을 기입하고 실행하기만 하면 된다.

시험해 보다
이번에 나는 자신의 프로젝트 관련 팀에서 열람할 수 있는 창고 일람표를 얻는 것에 대한 조회를 썼다.
query {
  organization(login: "組織のアカウント名"){
    name,
    login,
    teams(query: "検索ワード",first: 100){
      totalCount,
      edges{
        node{
          name,
          repositories(first: 100){
            totalCount,
            edges{
              node{
                nameWithOwner
              }
            }
          }
        }
      }
    }
  }
}


이 작업을 수행하면 이러한 데이터가 반환됩니다.
{
  "data": {
    "organization": {
      "name": "組織名",
      "login": "組織のアカウント名",
      "teams": {
        "totalCount": 9,
        "edges": [
          {
            "node": {
              "name": "チーム名",
              "repositories": {
                "totalCount": 32,
                "edges": [
                  {
                    "node": {
                      "nameWithOwner": "所有者/リポジトリ名"
                    }
                  },
                  {
                    "node": {
                      "nameWithOwner": "所有者/リポジトリ名"
                    }
                  }
          ・
          (長いので省略)
          ・
                ]
              }
            }
          },
          ・
          (長いので省略)
          ・
        ]
      }
    }
  }
}
이런 식으로 원하는 정보만 간단하게 얻을 수 있다.
그나저나 또 어떤 커넥션과 Field가 있는지 확인하고 싶다면
UI에서 커서를 정렬한 후 참조할 수 있어 매우 편리합니다.

질의 설명query {GraphiQL에는 "Query"와 "Mutation"두 종류가 있습니다.
'Query'는 데이터의 획득이고,'Mutation'은 데이터의 변경이다.
이번에는 데이터를 얻으려면query를 사용하세요.organization(login: "組織のアカウント名"){여기서 조직 객체를 가져옵니다.
매개 변수login은 필수입니다. 조직의 계정을 입력하세요.teams(query: "検索ワード",first: 100){조직에 존재하는 팀의 대상을 얻다.
query에 팀 이름과 관련된 문자열을 추가하여 선별할 수 있습니다.
우리 프로젝트는 이미 팀명 규칙을 제정했기 때문에, 나는 검색어를 넣고 그것을 걸어 놓았다.
first는 목록부터 n 개를 표시합니다.100까지만 지정할 수 있기 때문에, 초과하면 애프터 (지정한cursor 뒤에 있는 목록의 요소를 되돌려줍니다) 를 사용하여 표시 범위를 수정할 수 있습니다.edges{팀스는 여러 팀의 데이터가 있기 때문에 각자의 데이터에 접근하기 위해 엣지를 통해 접근합니다.
edge는cursor 등node를 식별하는 정보를 가지고 있습니다.node{파티의 데이터(name 등 파티 자체의 정보)를 포함합니다.
총결산
이렇게 사용하면 원하는 정보를 조회할 수 있고 탐색기의 사용도 상당히 편리하다.
나는 GraphiQL을 처음 접하여 간단하면서도 낭비하지 않는 API 요청을 실현할 수 있어서 매력적이라고 생각한다.
게임을 만들 때도 규격에 따라 변경된 API의 수정이 있었고 그때마다 대응하는 비용도 높았기 때문에 이를 해소할 수 있을지 고민하면서 그래픽QL에 대한 이해를 더 깊게 하고 싶었다.

좋은 웹페이지 즐겨찾기