50
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

アルス・ウェアーAdvent Calendar 2019

Day 24

GraphQLのリゾルバ(Resolver)とは

Posted at

リゾルバとは

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]
}

以上です。

参考

50
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
50
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?