GraphQL
RESTful APIの課題を解決するために生まれたクエリ言語
GraphQLの特徴として
型指定されたスキーマ
クライアントからのレスポンス形式の指定
サブスクリプションを利用したリアルタイム処理
が挙げられている *1
GraphQLが生まれた背景には以下のようなRESTの特徴があると考えるとわかりやすい
REST では API のデータ型は実装とは分離した形で提供されるため、API の定義と実装が乖離している場合がある
REST ではスキーマはサーバ側で定義されているため
クライアントにとって必要なデータが含まれていたり(オーバーフェッチ)
クライアントにとって必要なデータが含まれておらず複数回のアクセスが必要になったりする(アンダーフェッチ)
REST ではサーバ側から能動的に通信する仕組みがないため、クライアントがデータの更新を知ろうとするとポーリングなどを用いた非効率な通信が必要となる
GraphQLでは SDL (schema definition language) というのでスキーマを定義して
Query
Mutation
Subscription
という3種類のオペレーションを実行できる。
GraphQLはどんな時に使うか - Speaker Deck