2017年5月1日

GraphQL SDL — スキーマ定義言語

GraphQLには、GraphQLスキーマを記述するための独自の言語、GraphQLスキーマ定義言語(SDL)があります。SDLはシンプルで直感的でありながら、非常に強力で表現力豊かです。

GraphQL SDL 

GraphQLスキーマ定義とは?

GraphQLスキーマ定義は、GraphQLスキーマを記述する最も簡潔な方法です。その構文は明確に定義されており、GraphQLの公式仕様の一部です。スキーマ定義は、IDL(インターフェース定義言語)またはSDL(スキーマ定義言語)と呼ばれることもあります。

ブログアプリのGraphQLスキーマは、次のように記述できます。

スキーマ定義の主な構成要素は、型とそのフィールドです。追加情報として、likesフィールドに指定された`@default`値のようなカスタムディレクティブを提供できます。

型は名前を持ち、1つまたは複数のインターフェースを実装できます。

フィールド

フィールドは名前と型を持ちます。

GraphQL仕様では、いくつかの組み込みスカラー値が定義されていますが、具体的な実装によってさらに定義できます。組み込みのスカラー型は次のとおりです。

  • Int
  • Float
  • String
  • Boolean
  • ID

スカラー型に加えて、フィールドはスキーマ定義で定義された他の任意の型を使用できます。

非Nullableフィールドは感嘆符で示されます。

リストは角括弧で示されます。

Enum

enumは、指定された可能な値のセットを持つスカラー値です。

Interface

GraphQLでは、インターフェースはフィールドのリストです。GraphQL型は、実装するすべてのインターフェースと同じフィールドを持ち、すべてのインターフェースフィールドは同じ型である必要があります。

スキーマディレクティブ

ディレクティブを使用すると、任意の情報を他のスキーマ定義要素に関連付けることができます。ディレクティブは常に、記述する要素の後ろに配置されます。

ディレクティブには本質的な意味はありません。各GraphQL実装は、新しい機能を追加する独自のカスタムディレクティブを定義できます。

GraphQLは、クエリで特定のフィールドを含めたり除外したりするために使用できる組み込みのskipおよびincludeディレクティブを指定しますが、これらはスキーマ言語では使用されません。

次回の投稿をお見逃しなく!

Prismaニュースレターに登録する