GraphQL スキーマで定義する 入力型 (input type) は、クエリ/ミューテーション要求時のフィールド引数にのみに使用できるオブジェクト型です。 入力型を使うと、複数のフィールド引数をひとつのオブジェクトにまとめることができます。
次の Mutation
型の createBook
フィールドは、フィールド引数として CreateBookInput
という入力型を使っています。
入力型を定義するときは input
キーワードを使用します(フィールド自体を表す型の定義には type
キーワードを使用します。こちらは出力型と呼ばれたりします)。
フィールドの定義方法は type
も input
も同じです。
次のスキーマは、上記の createBook
フィールドの型 (Book
) と、その引数の型 (CreateBookInput
) を定義しています。
type
キーワードと input
キーワードを使い分けていることに注意してください。
Book
型と CreateBookInput
型のフィールドはほとんど共通ですが、Book
型には GraphQL サーバー側で自動生成される id
情報が含まれています。
クライアントがミューテーション要求を送るときは、ミューテーション操作の変数経由で入力型のデータを渡します。
実際に使用する変数値は、次のような JSON 形式のデータとして、上記ドキュメントと一緒に GraphQL サーバーに送ります。
ミューテーション操作の戻り値は、一般的には新規作成した(あるいは更新後の)オブジェクトの内容です。
上記の createBook
フィールドの型(ミューテーション操作の戻り値)は Book
型でしたが、CreateBookPayload
のような別の出力型を定義すれば、ミューテーション操作に関するメタ情報を含めることができます。
例えば、ミューテーション操作によって実際に追加されたデータの数などを戻り値として返すことができます。
type Mutation {
createBook(input: CreateBookInput!): CreateBookPayload!
}