UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【GraphQL】IntrospectionでGraphQLスキーマがどのようなクエリをサポートしているのか知る

APIをGraphQLで構築している外部サービスを利用することになった

提供されたドキュメントには利用できるクエリや型の情報が載っているが、使うとなった時にドキュメントから読み取ってスキーマを作るのは辛いと感じた

なのでドキュメントからではなくGraphQLスキーマが実際どのようなクエリをサポートしているのか知る方法を調べた

Introspectionを使う

GraphQLには Introspection という機能があることを知った

https://graphql.org/learn/introspection/

https://spec.graphql.org/October2021/#sec-Schema-Introspection

Introspection はGraphQLサーバーで利用される引数、フィールド、型、description、型の非推奨ステータスなどのデータ構造に関する情報を教えてくれるというもの

{
  __schema {
    types {
      name
    }
  }
}

自身が Introspection を利用するのもいいが、それを使ってschema.jsonを生成し、それを基に利用したいプログラミング言語の型にしてくれるツールがあるので、それを利用するのが良さそう

例えば、Apollo でのコード生成ツールなどを利用するのが良さそう

github.com