コンテンツにスキップ

スキーマ

スキーマはGraphQLサーバーの機能を定義します。 データベースのスキーマ定義のように、APIが返すことのできる構造と型を記述します。

型は、GraphQLスキーマの主要な構成部品です。 APIへ渡すパラメータ、及び、APIから取得できるデータの種類を定義します。

type User {
  id: ID!
  name: String!
  email: String!
  created_at: String!
  updated_at: String
}

ルートタイプ

GraphQLスキーマには、最大で3つの特別な ルートとなる型 が存在します。 これらはクエリが持つ可能性のあるルートフィールドを定義します。これらはすべてオブジェクト型 ですが、機能的には単なるオブジェクト型と異なる特別な位置付けとなります。

クエリ

すべての GraphQL スキーマはQueryタイプを持つ必要があり、APIが提供するクエリが含まれます。 クエリは引数を取り、決まった結果を返すRESTリソースのようなものと考えることができます。

type Query {
  me: User
  users: [User!]!
  userById(id: ID): User
}

ミューテーション

Query型とは対照的に、Mutation型のフィールドはサーバー上でデータを変更することができます。

type Mutation {
  createUser(name: String!, email: String!, password: String!): User
  updateUser(id: ID, email: String, password: String): User
  deleteUser(id: ID): User
}

サブスクリプション

Subscription 型のフィールドは、一回限りのレスポンスを返すのではなく、リアルタイムでの更新を伴うようなレスポンスのストリームを返します。

type Subscription {
  newUser: User
}