メインコンテンツへ
ネットワークネットワーク実践

GraphQLの特徴として最も正しいものはどれか。

ア.サーバがどのデータをいつ送るかを完全に決定するプッシュ型データ配信プロトコル
イ.REST APIと同様に、各リソースに対して固定のエンドポイントを設けるアーキテクチャ
ウ.データベースのSQLを直接HTTPで実行するためのプロキシ仕様
エ.クライアントが必要なデータの形とフィールドを指定して取得でき、単一エンドポイントで複数リソースを一括取得できるクエリ言語仕様正解

解説

GraphQLは「注文書を自分で書けるビュッフェレストラン」みたいなもの。RESTが「シェフが決めたセットメニューを注文する」なら、GraphQLは「欲しいものだけをリストアップして一度に持ってきてもらう」スタイル。過不足なく、丁度必要な分だけのデータを一発で取得できる!

なぜ エ が正解か

GraphQLの核心的特徴:①クライアント主導のデータ取得:クライアントがスキーマから必要なフィールドを指定→オーバーフェッチ(余分なデータ取得)・アンダーフェッチ(必要なデータが足りない)を解消②単一エンドポイント:通常/graphqlの1つのURLで全操作③操作種別:Query(取得)/ Mutation(変更)/ Subscription(リアルタイム)④強型付きスキーマ:型システムでAPIを定義⑤N+1問題等のデメリットも存在(DataLoaderで対策)。

なぜ ア は間違いか

サーバがデータを決定するプッシュ型はサーバサイドイベント(SSE)やWebSocketに近い。GraphQLのSubscriptionはリアルタイム対応だが、基本はクライアントがクエリを指定する。

なぜ イ は間違いか

各リソースに固定エンドポイントを設けるのはRESTの特徴。GraphQLの最大の違いは単一エンドポイントでクライアントがデータ形状を決めること。

なぜ ウ は間違いか

SQLをHTTPで直接実行するプロキシではない。GraphQLはSQLとは独立したクエリ言語で、リゾルバがSQLを実行するかどうかは実装次第。

出典: AI生成問題(学習用)