リゾルバとは
GraphQLのスキーマと型定義でも触れたとおり、スキーマ定義にてクライアントが操作できるクエリや様々な型を定義しています。ただし、スキーマはあくまで定義のみで実際のデータ操作は行いません。実際のデータ操作を行うのがリゾルバというものになります。リゾルバの実態は特定のフィールドのデータを返す関数(メソッド)です。リゾルバはGraphQLサーバー開発者が提供する必要があります。
例えば、以下のようなスキーマ定義があった場合、type Queryにある通りID型を引数にとりBook型を返すbookByIdという名前の関数を用意する必要があります。
schema.graphqls
type Book {
id: ID
name: String
pageCount: Int
author: Author
}
type Author {
id: ID
firstName: String
lastName: String
}
type Query {
bookById(id: ID): Book
}
上記例のリゾルバの実装は「Spring BootでGraphQLを実装する」のリゾルバ(Resolver)の作成にある通りです。
また、全てのフィールドに対応するリゾルバが必要です。例えば、以下のようなスキーマ定義があった場合、ID型を引数にとりBook型を返すbookByIdという名前の関数と、引数なしでUser型のリストを返すusersという名前の関数が必要です。
schema.graphqls
type Book {
id: ID
name: String
pageCount: Int
author: Author
}
type Author {
id: ID
firstName: String
lastName: String
}
type User {
id: ID
name: String
}
type Query {
bookById(id: ID): Book
users: [User]
}
以上です。