Graphql-type-system

提供:Dev Guides
移動先:案内検索

GraphQL-タイプシステム

GraphQLは強く型付けされた言語です。 型システムは、GraphQLアプリケーションで使用できるさまざまなデータ型を定義します。 型システムは、クライアントとサーバー間の契約であるスキーマの定義に役立ちます。 一般的に使用されるGraphQLデータ型は次のとおりです-

Sr.No. Types & Description
1

Scalar

単一の値を格納します

2

Object

取得できるオブジェクトの種類を示します

3

Query

他の特定のタイプへのエントリポイントタイプ

4

Mutation

データ操作のエントリポイント

5

Enum

ユーザーが所定のオプションリストから選択する必要がある状況で役立ちます。

スカラー型

スカラー型は、単一の値のみを格納できるプリミティブデータ型です。 GraphQLが提供するデフォルトのスカラー型は-

  • Int -符号付き32ビット整数
  • Float -符号付きの倍精度浮動小数点値
  • String -UTF-8文字のシーケンス
  • ブール-真または偽
  • ID -一意の識別子。多くの場合、オブジェクトを取得するための一意の識別子として、またはキャッシュのキーとして使用されます。

スカラー型を定義するための構文は次のとおりです-

field: data_type

以下のスニペットは、string値を返すgreetingという名前のフィールドを定義しています。

greeting: String

オブジェクトタイプ

オブジェクトタイプは、スキーマで使用される最も一般的なタイプであり、フィールドのグループを表します。 オブジェクトタイプ内の各フィールドは別のタイプにマップされるため、ネストされたタイプが許可されます。 つまり、オブジェクト型は複数のスカラー型またはオブジェクト型で構成されます。

オブジェクトタイプを定義するための構文は次のとおりです-

type object_type_name
{
   field1: data_type
   field2:data_type
   ....
   fieldn:data_type
}

あなたは次のコードスニペットを考慮することができます-

--Define an object type--

type Student {
   stud_id:ID
   firstname: String
   age: Int
   score:Float
}
--Defining a GraphQL schema--

type Query
{
   stud_details:[Student]
}

上記の例では、オブジェクトデータ型Studentを定義しています。 ルートQueryスキーマの_stud_details_フィールドは、Studentオブジェクトのリストを返します。

クエリタイプ

GraphQLクエリを使用してデータを取得します。 RESTベースのAPIでリソースを要求するようなものです。 簡単にするために、クエリタイプはクライアントアプリケーションからGraphQLサーバーに送信されるリクエストです。 GraphQLは、*スキーマ定義言語(SDL)*を使用してクエリを定義します。 クエリタイプは、GraphQLの多くのルートレベルタイプの1つです。

クエリを定義するための構文は以下のとおりです-

type Query {
   field1: data_type
   field2:data_type
   field2(param1:data_type,param2:data_type,...paramN:data_type):data_type
}

クエリを定義する例-

type Query  {
   greeting: String
}

変異タイプ

突然変異は、データを作成、更新、または削除するためにサーバーに送信される操作です。 これらは、RESTベースのAPIを呼び出すPUT、POST、PATCHおよびDELETE動詞に類似しています。

突然変異は、GraphQLのルートレベルのデータ型の1つです。 Queryタイプはデータ取得操作のエントリポイントを定義し、Mutationタイプはデータ操作操作のエントリポイントを指定します。

突然変異の種類を定義するための構文は以下のとおりです-

type Mutation {
   field1: data_type
   field2(param1:data_type,param2:data_type,...paramN:data_type):data_type
}

たとえば、次のように突然変異のタイプを定義して新しい生徒を追加できます-

type Mutation {
   addStudent(firstName: String, lastName: String): Student
}

列挙型

Enumはスカラー型に似ています。 列挙型は、フィールドの値が所定のオプションリストからのものでなければならない状況で役立ちます。

列挙型を定義するための構文は次のとおりです-

type enum_name{
   value1
   value2
}

次のスニペットは、列挙型を定義する方法を示しています-

type Days_of_Week{
   SUNDAY
   MONDAY
   TUESDAY
   WEDNESDAY
   THURSDAY
   FRIDAY
   SATURDAY
}

リストタイプ

リストを使用して、特定のタイプの値の配列を表すことができます。 リストは、オブジェクト型、スカラー、および列挙型をラップする型修飾子[]で定義されます。

次の構文は、リストタイプを定義するために使用することができます-

field:[data_type]

以下の例では、リストタイプのtodosを定義しています-

type Query {
   todos: [String]
}

Null不可タイプ

デフォルトでは、各コアスカラータイプをnullに設定できます。 つまり、これらの型は指定された型の値を返すか、値を持たないかのいずれかです。 このデフォルトをオーバーライドし、フィールドを定義する必要があることを指定するには、感嘆符(!)をタイプに追加できます。 これにより、クエリによって返される結果に値が存在することが保証されます。

次の構文を使用して、null不可フィールドを定義できます-

field:data_type!

以下の例では、_stud_id_が必須フィールドとして宣言されています。

type Student {
   stud_id:ID!
   firstName:String
   lastName:String
   fullName:String
   college:College
}