Open1
【GraphQL】スキーマの設計 - 型定義について
概要
GraphQLスキーマの設計についてまとめる
型
GraphQLスキーマの核になる型は固有のオブジェクトでアプリケーションの特性を反映する。
それぞれの型はデータに対応するフィールドを待つ。
type Photo {
id: ID!
name: String!
url: String!
description: String
}
ビックリマークはフィールドがnullにならないことを示しているので、nameやurlのフィールドには必ず何かしらの値が格納される。
GraphQLのID型は固有の識別子を格納する。JSONとhしては文字列が返されるが、Stringとは異なり値が重複しないことをバリデーションする。
スカラー型
GraphQLの組み込みのスカラー型(Int, Float, String, Boolean, ID)はとても便利だがカスタムカラーを使用することもできる。
カスタムスカラーとして定義しておけばGraphQLのサービス実装時二バリデーションの実装ができる
type Photo {
id: ID!
name: String!
url: String!
description: String
created: Datetime!
}
Datetimeというカスタムスカラー型を定義し、正しいフォーマットになっているかバリデーションできる。
ENUM
あらかじめ定められた特定の文字列のひとつを返すスカラー型。
選択肢のうちのひとつの値を返すようんあフィールドを実装したいときにenum型を使用する。
enum PhotoCategory {
SELFIE
PORTRAIT
ACTION
LANDSCAPE
GRAPHIC
}
列挙型をフィールドに追加することもできる。
Photoにcategoryフィールドを追加すると以下のようになる。
type Photo {
id: ID!
name: String!
url: String!
description: String
created: Datetime!
category: PhotoCategory!
}
自分のサービス実装時には、categoryはenumで定められた5つの値のみを返すことを保証しなければならない。