GraphQL は API 向けのクエリ言語であり、型付きスキーマに対してそれらのクエリを処理するランタイムでもあります。クライアントは必要なフィールドを正確に記述した 1 つのリクエスト を送信し、サーバーはその形に厳密に一致したデータを返します。過不足はありません。
/users、/users/1/posts) を公開しますが、GraphQL は単一の /graphql エンドポイントを公開し、クエリ本文でデータを選択します。# One request fetches a user AND their posts' titles — no second round trip
query {
user(id: "1") { # pick the user by id
name # only the fields we list come back
posts { # nested: follow the relationship in the same query
title
}
}
}
レスポンスはクエリを正確に反映します: { "data": { "user": { "name": "...", "posts": [{ "title": "..." }] } } }。
面接官がこれを尋ねるのは、中心的なトレードオフ を理解しているか確認するためです。GraphQL は over/under-fetching を解消しクライアントに柔軟性を与えますが、その代償としてサーバー側の複雑さ (リゾルバ、キャッシュ、クエリコストの制御) が増します。構文だけでなく なぜ それが存在するのかを知っていることは、適切なツールを選べることの証になります。