SDL
GraphQL API を構築するにあたり、FW、言語に依存せずに表現できる。
型について
TypeScript にシンタックスが似ている
GraphQL には大きく分けてスカラー型とオブジェクト型が存在する
スカラー型
String(文字列型)
Int(整数型)
Float(浮動小数点型)
Boolean(論理型)
ID(ID型)
IntとFloatはJSONではnumberで表現される
StringとIDはJSONではstringで表現される
Booleanはbooleanで表現される
ID型の実態は文字列(String)だが、GraphQLの仕様上ユニークでなければならない点でString型と区別されてる
オブジェクト型
1つ以上のスキーマで定義されているフィールドの集合をオブジェクト型という
JSONのように入れ子にすることができる
code:graphql
type Book {
id: ID! ←スカラー型(ID)
name: String ←スカラー型(String)
pageCount: Int ←スカラー型(Int)
author: Author ←オブジェクト型(下記Authorスキーマにあるようにフィールドの集合)
}
type Author {
id: ID! ←スカラー型(ID)
firstName: String ←スカラー型(String)
lastName: String ←スカラー型(String)
}
列挙型(Enum)の定義
列挙型(Enum)も定義できる
TypeScript では使いたくないので使わない気がする
リスト
型を[] で囲うとリスト(配列)になる
TypeScript だと型の後ろに付けるやつ例) string[]
code:graphql
type Department {
id: ID!
}
Union型
複数の型のどれかに当てはまるような型
パイプで繋ぐ|
code:graphql
type User {
type: Human | Robot
}
その他
!マーク
型の後ろに付ける事で必須になる、付けないときはnull を許容する
TypeScript とは決定的に違うとこだ
リストでの!マーク
リストの宣言 定義
[String] nullかもしれないリストで中身もnullかもしれない文字列型
[String!] nullかもしれないリストで中身はnullではない文字列型
[String]! nullではないリストで中身はnullかもしれない文字列型
[String!]! nullではないリストで中身もnullではない文字列型
参考