GraphQLからのIntrospection JSON — Numio
@graphql-codegen/introspection を使って、GraphQL SDL を標準の introspection クエリの JSON 結果に変換します。出力にはトップレベルの __schema オブジェクトがあり、ルート型、組み込みを含むすべての型、ディレクティブが入ります。
一部の IDE プラグインやクライアントジェネレーターなど、SDL ではなく introspection JSON を求めるツール向けに schema.json を作る。
こんなときに使えます
- 一部の IDE プラグインやクライアントジェネレーターなど、SDL ではなく introspection JSON を求めるツール向けに schema.json を作る。
- introspection データの中で、フィールドの型が NON_NULL や LIST の kind でどうラップされるかを確認する。
使い方
- GraphQL Schema エディターにスキーマの SDL を貼り付けます。
- Introspection JSON パネルに JSON が出るのを待ちます。フィールドが 1 つのスキーマでも約 1,000 行になります。
- JSON をコピーまたはダウンロードし、schema.json などとして保存します。
GraphQL スキーマ
type Query {
hello(name: String): String!
}Introspection JSON
{
"__schema": {
"queryType": {
"name": "Query"
},
"mutationType": null,
"subscriptionType": null,
"types": [
{
"kind": "OBJECT",
"name": "Query",
"description": null,
"fields": [
{
"name": "hello",
"description": null,
"args": [
{
"name": "name",
"description": null,
"type": {
"kind": "SCALAR",
"name": "String",
"ofType": null
…仕様と制限
組み込みスカラー(String、Boolean)、introspection 型(__Schema、__Type、__Field など)、組み込みディレクティブ(include、skip、deprecated、specifiedBy)は常に含まれます。
JSON は "data" キーで包まれておらず、__schema から直接始まります。
変換はブラウザの Web Worker で実行されます。このページが受け取るのはスキーマだけで、稼働中のエンドポイントにはクエリしません。
FAQ
URL から introspection JSON を取得できますか?
できません。ページは貼り付けた SDL を変換するだけで、サーバーに introspection クエリを送りません。先にサーバーから SDL をエクスポートして、ここに貼り付けてください。
非推奨のフィールドも含まれますか?
含まれます。すべてのフィールドと enum 値に isDeprecated と deprecationReason が付くため、@deprecated のフィールドは isDeprecated: true として現れます。
小さなスキーマなのに出力が大きいのはなぜですか?
introspection 結果は、自分で定義した型だけでなく、組み込みスカラー、introspection のメタ型、ディレクティブ定義を含む型システム全体を記述するためです。