まくろぐ

GitHub GraphQL のスキーマ情報を取得する

更新:
作成:

GitHub API のサイトからダウンロードする方法

次のサイトから GitHub GraphQL API のスキーマ定義ファイル (schema.docs.graphql) をダウンロードすることができます。

例えば、このファイル内の Query オブジェクト (type Query) の定義を見ると、クエリのトップレベルにどのようなオブジェクト(フィールド)を指定できるかが分かります。

schema.docs.graphql
type Query {

  ...

  organization(
    login: String!
  ): Organization

  ...

  user(
    login: String!
  ): User
}

上記の場合、Query オブジェクト内に organizationuser フィールドが定義されているので、クライアントアプリからクエリ要求を出すときに、次のような感じで指定できるということが分かります。

query {
  organization(login: "netflix") {
    name
    description
    avatarUrl
  }
  user(login: "octocat") {
    name
    company
    url
    avatarUrl
  }
}

スキーマ定義ファイル (.graphql) とクライアントアプリ側のクエリ定義 (query {...}) を組み合わせることで、TypeScript 用の型定義ファイルを自動生成することができます(クエリ要求の戻り値の型を定義できます)。 詳しくは、Apollo CLI などのコマンドラインツールを確認してください。

GraphQL サーバーから直接取得する方法

GitHub の GraphQL API サーバーに HTTP GET リクエストを送ることで、スキーマ定義を直接取得することができます。 パーソナルアクセストークンはこちら から生成してください。

$ token=<YOUR_PERSONAL_ACCESS_TOKEN>
$ curl -H "Authorization: bearer $token" https://api.github.com/graphql

結果は圧縮された JSON テキストで返されます。 python -m json.tool にパイプすることで見やすく整形された JSON テキストを取得できます。

$ curl -H "Authorization: bearer $token" https://api.github.com/graphql | python -m json.tool

返されたスキーマ定義をファイルに保存すると、サイズは約 5MB になります。

関連記事

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