GraphQLを使用したイントロスペクションクエリ
提供:Dev Guides
GraphQLを使用すると、イントロスペクションクエリを実行して、利用可能なフィールドとGraphQLスキーマのタイプについて学習できます。 そのイントロスペクション機能は、GraphiQLにスキーマとオートコンプリートに関するドキュメントを提供する機能を提供するものでもあります。
Star Wars SWAPI public API エンドポイントを使用して、いくつかのイントロスペクションクエリを実行してみましょう。
__タイプ
まず、組み込みの __ type を使用して、フィルムタイプについて問い合わせるクエリを実行しましょう。
query FilmType { __type(name: "Film") { kind name fields { name description type { name } } } }
- Kind は、OBJECT、SCALAR、INTERFACEなどのタイプの列挙値を提供します。
- Name は、タイプの名前を示します。
- 説明、まあ、説明を教えてください!
そして、応答は次のようになります。
{ "data": { "__type": { "kind": "OBJECT", "name": "Film", "fields": [ { "name": "title", "description": "The title of this film.", "type": { "name": "String" } }, { "name": "episodeID", "description": "The episode number of this film.", "type": { "name": "Int" } }, ...
ここでは、組み込みの __ type (タイプ__Type)を使用して、特定のオブジェクトまたはインターフェースのタイプに関する情報を取得していることに注意してください。
フラグメントを使用して特定のタイプについてさらに学習する別の例を次に示します。
query LearnAboutFilm { __type(name: "Film") { ...AboutType } } fragment AboutType on __Type { fields { name description args { name description } } interfaces { name description } inputFields { name description } possibleTypes { kind name fields { name description type { kind name description } } } }
__スキーマ
__ schema を使用すると、サーバーにスキーマ自体について問い合わせることができます。 例を見てみましょう:
query LearnAboutSchema { __schema { types { name kind } queryType { fields { name description } } } }
そして応答:
{ "data": { "__schema": { "types": [ { "name": "Root", "kind": "OBJECT" }, { "name": "String", "kind": "SCALAR" }, { "name": "Int", "kind": "SCALAR" }, ... "queryType": { "fields": [ { "name": "allFilms", "description": null }, { "name": "film", "description": null }, ...
__typename
__ typename は、特定のフィールドのタイプについて問い合わせるための通常のクエリの一部として使用できます。
query LearnAboutFilm { allFilms { films { __typename title } } film (id: "ZmlsbXM6Mw==") { __typename title } starship(id: "c3RhcnNoaXBzOjc1") { __typename name model } }
そして、これが応答です:
{ "data": { "allFilms": { "films": [ { "__typename": "Film", "title": "A New Hope" }, { "__typename": "Film", "title": "The Empire Strikes Back" }, ... ] }, "film": { "__typename": "Film", "title": "Return of the Jedi" }, "starship": { "__typename": "Starship", "name": "V-wing", "model": "Alpha-3 Nimbus-class V-wing starfighter" } } }