Yanonoblog!

こつこつと

GraphQL - スキーマとタイプ

はじめに

GraphQLのドキュメントを読んでまとめていきます。

ところどころ気になった部分を調べて補足したり解釈を入れています。

https://graphql.org/learn/schema/

スキーマとタイプ

GraphQLのスキーマとタイプに関するこのセクションでは、GraphQLのタイプシステムと、データのクエリに関する情報の記述方法について学びます。

タイプシステム

GraphQLのクエリは、基本的にオブジェクト上のフィールドを選択することに関連しています。

サンプルコード

{
  # heroフィールドを選択
  hero {
    # heroによって返されるオブジェクトのnameとappearsInフィールドを選択
    name
    appearsIn
  }
}

このクエリの形状は結果に密接に一致するため、サーバーについてあまり知らなくても、クエリが何を返すかを予測できます。

スキーマの役割

すべてのGraphQLサービスは、そのサービスでクエリできる可能なデータのセットを完全に記述するタイプのセットを定義します。

その後、クエリが入ってくると、スキーマに対して検証および実行されます。

タイプ言語

GraphQLサービスは任意の言語で書かれています。

特定のプログラミング言語の構文に依存することなく、GraphQLスキーマについて話すため、独自のシンプルな言語を定義します。

オブジェクトタイプとフィールド

サンプルコード

# Character ・・・ GraphQLのオブジェクトタイプ
type Creature {
  # nameはフィールドで、String型のデータを返す。"!"はそのフィールドがnullでないことを意味する。
  name: String!
  # livesInはEpisodeオブジェクトの配列を返す
  livesIn: [Location!]!
}
  • name と livesIn・・・Creatureタイプのフィールドで、動作するGraphQLクエリの任意の部分に表示できます。
  • String・・・組み込みのスカラータイプの1つで、これらのタイプは単一のスカラーオブジェクトに解決され、クエリでサブセレクションを持つことはできません。
  • [Location!]!・・・これはLocationオブジェクトの配列を表します。 これもnull不可なので、livesInフィールドをクエリするときには常に配列(0項目以上)を期待できます。 また、Location!もnull不可なので、配列の各項目がLocationオブジェクトであることを常に期待できます。

おしまい

コメント

本記事の内容は以上になります!