これらは 3 つの オペレーション型 で、それぞれスキーマのルート型に対応します:
- Query — データを読み取ります。フィールドは 並列 に実行され、副作用があってはなりません (HTTP GET のように)。
- Mutation — データを書き込みます (作成/更新/削除)。トップレベルのフィールドは 実行されるため、順序が保証されます。
これらは 3 つの オペレーション型 で、それぞれスキーマのルート型に対応します:
query GetPost { # read
post(id: "1") { title }
}
mutation AddComment { # write; returns the created object so the client updates its cache
addComment(postId: "1", text: "Nice!") {
id
text
}
}
subscription OnComment { # live: fires every time a comment is added
commentAdded(postId: "1") {
id
text
}
}
Mutation は 引数 (多くの場合 input オブジェクト) を取り、クライアントが 2 回目のリクエストなしで更新できるよう 影響を受けたデータを返す べきです。順次実行のルールは重要です。1 つのドキュメント内の 2 つの mutation — deposit の次に withdraw — は常にその順序で実行されますが、2 つの query フィールドは同時に解決される可能性があります。
面接官は、query は並列かつ副作用なし、mutation は順次 であること、そして subscription がステートフルなトランスポート (WebSocket/SSE) を必要とすることを理解しているか確認します。mutation から更新後のデータを返すという実践的な詳細は、GraphQL を実際に運用した人と、読んだだけの人を分けます。
ジュニアからシニアまで、詳細な回答付きのIT面接質問ライブラリ。
寄付する