まくろぐ

GitHub GraphQL API のクエリ例

更新:
作成:

GitHub の GraphQL API を使用すると、GitHub で管理されているリポジトリの情報や Issue リストなど、いろいろな情報を柔軟なクエリで取得することができます。 古いバージョンの GitHub API (ver.3) は REST API 形式で提供されていますが、REST API は必要な情報を集めるために何度もクエリを発行する必要があったりと効率が悪いので、できれば GraphQL API の方を使用すべきです。

実際に GraphQL API でどのような情報が取得できるかは、下記のサイトで確認することができます。

エディタ上では、Ctrl + Space で入力補完、Ctrl + Enter で実行することができます。 GitHub アカウントでサインインした状態であれば、プライベートリポジトリの情報も取得することができます。 GitHub GraphQL API を利用するアプリケーションを作成するときは、このサイトでどのようなクエリを発行すればよいのかを調べながら作っていくことになると思います。

GitHub 用 GraphQL クエリの例

例: あるリポジトリ (myorg/myrepo) の Issue を取得する

query MyQuery {
  search(query: "repo:myorg/myrepo is:issue", type: ISSUE, first: 100) {
    issueCount
    nodes {
      ... on Issue {
        id
        number
        title
        closed
        url
        labels(first: 100) {
          nodes { name color }
        }
      }
    }
  }
}

search を使うと、クエリ文字列を使った柔軟なデータ検索を行うことができます。 query パラメータには、GitHub の Issues ページの検索窓に入力できる is:issue is:open といった文字列で、下記のサイトに詳細仕様が記述されています。

Issue およびプルリクエストを検索する - GitHub Docs

クエリのパラメータ化

リポジトリ名などは自由に設定できた方がよいので、クエリ文字列は次のようにパラメータとして渡せるようしておくと便利です。

query MySearch($queryString: String!) {
  search(query: $queryString, type: ISSUE, first: 100) {
    ...
  }
}

あとは、QUERY VARIABLES として次のように $queryString に設定する文字列を指定します。

{
  "queryString": "repo:myorg/myrepo is:issue"
}

他にも次のようなクエリ文字列を指定できます。

関連記事

まくろぐ
サイトマップまくへのメッセージ