HTTP メソッドはリソースに対するあなたの意図を述べ、status code はサーバーのコード化された答えです。メソッドには 2 つの性質が重要です:safe(読み取り専用、副作用なし)と idempotent(繰り返しても同じ結果になる — 安全な再試行に重要)。
| メソッド | 目的 | Safe | Idempotent |
|---|
| GET | リソースを読む | Yes | Yes |
| POST | 作成 / アクションを起動 | No | No |
| PUT | リソースを置き換える | No | Yes |
| PATCH | 部分的に更新する | No | No* |
| DELETE | リソースを削除する | No | Yes |
| HEAD | GET と同様だがヘッダのみ | Yes | Yes |
idempotency の区別は実用的です。PUT と DELETE は idempotent なので、クライアントはタイムアウト後に安全に再試行できます。idempotent でない POST の再試行は重複作成(古典的な二重課金バグ)のリスクがあります。
Status code は最初の桁でグループ化されます:
1xx Informational request received, continuing (100 Continue, 101 Switching)
2xx Success it worked (200 OK, 201 Created, 204 No Content)
3xx Redirection go elsewhere (301 Moved, 304 Not Modified)
4xx Client error YOUR request is wrong (400, 401, 403, 404, 429)
5xx Server error the SERVER failed (500, 502, 503, 504)
最も重要な線引きは 4xx 対 5xx の分割です:4xx はクライアントが誤ったものを送ったこと(不正な入力、未認証、見つからない)を意味し — そのまま再試行しても役立ちません。5xx はサーバーが失敗したことを意味し — (バックオフ付きで)再試行すれば成功するかもしれません。日常的なものは確実に覚えておきましょう:401(未認証)対 403(認証済みだが許可されていない)、404(見つからない)、429(レート制限)、500(汎用的なサーバークラッシュ)、502/503/504(bad gateway / 利用不可 / gateway timeout — 通常は upstream か過負荷の問題)。
これらのコードは、あらゆるクライアントとサーバーの間の共通の契約であり、ここでの流暢さは API を作る人・使う人すべてに期待されます。面接官は、本当の理解を明らかにする区別を探ります:401 対 403、PUT 対 PATCH、とりわけ idempotency — これは再試行が安全かどうかを直接統べるもので、分散システムや決済フローの中核的な関心事です。正しい status code を返すことは、API を予測可能にし、キャッシュ・proxy・クライアントライブラリに正しく扱われるようにもするため、この知識は単なる雑学ではなく、良い API 設計を形づくります。
ジュニアからシニアまで、詳細な回答付きのIT面接質問ライブラリ。
寄付する