フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

GraphQLのスカラーと型

はじめに

  • 前回、ざっくりGrapQLのqueryを触ったので、もう少し掘り下げてスカラーと型について調べる graphql.org

  • 前回のざっくり調査

px-wing.hatenablog.com

px-wing.hatenablog.com

GraphQL スカラー

ID

ID スカラー型は一意の ID を表し、オブジェクトの再取得のため、またはキャッシュのキーとしてよく使用されます。ID 型は文字列と同じ方法でシリアル化されますが、ID をフィールドとして定義することは、人間による読み取りを想定していないことを意味します。

文字列

String スカラー型は UTF-8 文字シーケンスとして表現されるテキストデータです。String 型は、ほとんどの場合、人間が読み取れる自由形式のテキストを表現するために GraphQL によって使用されます。

Int

Int スカラー型は、非小数の符号付き整数値を表します。Int は -(231) と 231 - 1 の間の値を表現できます。

Float

Float スカラー型は IEEE 754 で指定された符号付き倍精度小数値を表します。

Boolean

Boolean スカラー型は true または false のブール値を示します。

Enumeration型

  • 許可された値の特定のセットに制限される特別な種類のスカラー
  • このタイプの引数が許可された値の1つであることを確認してください
  • 型システムを介して、フィールドが常に有限の値のセットの1つになることを伝えます。
enum Episode {
  NEWHOPE
  EMPIRE
  JEDI
}
  • スキーマでEpisodeタイプを使用する場合は常に、NEWHOPE、EMPIRE、またはJEDIのいずれかであることが期待されることを意味します

カスタムスカラー

  • ほとんどのGraphQLサービス実装では、カスタムスカラー型を指定する方法もあります。たとえば、Date型を定義できます。
  • 各サービスで独自で定義した型がある。githubはUser型などがある
scalar Date
  • 次に、その型をシリアル化、逆シリアル化、および検証する方法を定義するのは、実装次第です。たとえば、Date型は常に整数のタイムスタンプにシリアル化する必要があることを指定できます。クライアントは、任意の日付フィールドにその形式を期待することを知っている必要があります。

  • 基本的なコンポーネントはオブジェクトタイプです。これは、サービスからフェッチできる一種のオブジェクトと、それが持つフィールドを表します。
表示 説明
String nullableなString型
String! non-nullableなString型
[String] nullableなString型のnullableな配列型
[String!]! non-nullableなString型のnon-nullableな配列型