N
nob@lit-forge
HTTP ステータスコード 早見表
1xx から 5xx までの HTTP ステータスコードを用途・意味・典型的なユースケースで整理した早見表。API 開発や Web サーバーのデバッグで迷う代表的なコード(301/302/401/403/429/502 など)の違いを実例付きで解説。
#HTTP#ステータスコード#API#Web
1xx 情報レスポンス
| Code | 名称 | 用途 |
|---|---|---|
| 100 | Continue | リクエストの前半を受理、続きを送ってよい |
| 101 | Switching Protocols | プロトコル切替(例: WebSocket へのアップグレード) |
2xx 成功
| Code | 名称 | 用途 |
|---|---|---|
| 200 | OK | 最も一般的な成功 |
| 201 | Created | POST でリソース作成成功(Location ヘッダを付けるのが定石) |
| 202 | Accepted | 受理したが処理は非同期(ジョブキューに積んだ等) |
| 204 | No Content | 成功・ボディなし(DELETE や PUT 後に使われる) |
| 206 | Partial Content | Range リクエストに対する部分応答 |
3xx リダイレクト
| Code | 名称 | 用途 |
|---|---|---|
| 301 | Moved Permanently | 恒久的移動。ブラウザ・検索エンジンにキャッシュされる |
| 302 | Found | 一時的移動。次のアクセス時は元の URL を再試行 |
| 303 | See Other | POST 後に GET リダイレクト(PRG パターン) |
| 304 | Not Modified | 条件付き GET で未更新。ETag / If-Modified-Since と併用 |
| 307 | Temporary Redirect | 302 と似るが、メソッドを保持する(POST→POST) |
| 308 | Permanent Redirect | 301 と似るが、メソッドを保持する |
4xx クライアントエラー
| Code | 名称 | 用途 |
|---|---|---|
| 400 | Bad Request | リクエスト構文が不正(JSON パースエラーやバリデーション NG) |
| 401 | Unauthorized | 未認証。WWW-Authenticate ヘッダを付ける |
| 403 | Forbidden | 認証済みだが権限なし |
| 404 | Not Found | リソースが存在しない |
| 405 | Method Not Allowed | GET のみ許可しているエンドポイントに POST 等 |
| 408 | Request Timeout | サーバーがリクエスト受信の待ち時間を超過 |
| 409 | Conflict | 競合状態(例: 楽観的ロック失敗) |
| 410 | Gone | 恒久的に消去されたリソース(404 より強い意味) |
| 413 | Payload Too Large | リクエストボディが大きすぎる |
| 415 | Unsupported Media Type | Content-Type が受け付けられない |
| 422 | Unprocessable Entity | 構文は OK だが意味的に処理できない(バリデーション標準) |
| 429 | Too Many Requests | レートリミット超過。Retry-After ヘッダを返すのが推奨 |
5xx サーバーエラー
| Code | 名称 | 用途 |
|---|---|---|
| 500 | Internal Server Error | 想定外のサーバーエラー全般 |
| 501 | Not Implemented | メソッド or 機能が未実装 |
| 502 | Bad Gateway | 上流サーバー(リバースプロキシ越し等)から不正な応答 |
| 503 | Service Unavailable | 一時的に不可(メンテ・過負荷)。Retry-After 推奨 |
| 504 | Gateway Timeout | 上流サーバーが時間内に応答しなかった |
使い分けで迷いがちなケース
- 400 vs 422: 構文エラー(JSON パース失敗など)は 400、意味エラー(必須項目欠落)は 422 と使い分けると API 利用側が扱いやすい
- 401 vs 403: 誰なのか分からない → 401、誰か分かるがアクセス権なし → 403
- 301 vs 302 vs 308: SEO で正規 URL に集約したい → 301/308、メソッドを変えたい(POST→GET)→ 303
- 429 の Retry-After: 秒数 or HTTP-date を返す。これを返さないと自動リトライが暴走しやすい
- 503 の活用: 一時メンテ時は 503 を返す。404 や 500 を返すと検索エンジンがインデックスを落とす