HTTP Status Codes List - ステータスコード一覧と意味
404 や 500 はすぐ分かっても、422 や409、504 となると意味が曖昧なまま使ってしまうことは多いはずです。http status codes(HTTPステータスコード)は先頭の数字でクラス分けされた 3桁の整数で、クラスごとの意味を理解すればレスポンスの性質を素早く把握できます。 この記事では1xx〜5xxのクラス別一覧表と、よく混同されるコードの違いを整理します。
HTTP status codes are three-digit numbers grouped into five classes by their first digit. This guide lists the codes you'll actually encounter, class by class, and clarifies the pairs developers most often confuse — 301 vs. 302, 401 vs. 403, and 502 vs. 503 vs. 504.
TL;DR
- 1xx 情報 / 2xx 成功 / 3xx リダイレクト
- 4xx クライアント側エラー / 5xx サーバー側エラー
- 301は恒久的リダイレクト(SEO評価が引き継がれる)、302は一時的リダイレクト
- 401は未認証、403は権限不足。詳細は専用ガイドを参照
- 502/503/504はいずれも5xxだが、原因(不正応答/過負荷/タイムアウト)が異なる
1. クラス別の意味 / What each class means
| クラス | 意味 | 責任範囲 |
|---|---|---|
| 1xx Informational | 処理継続中の暫定応答 | - |
| 2xx Success | リクエストが正常に処理された | - |
| 3xx Redirection | 追加のアクション(別URLへの移動等)が必要 | - |
| 4xx Client Error | リクエスト側に問題がある | クライアント |
| 5xx Server Error | サーバー側で処理に失敗した | サーバー |
2. よく使う主要コード一覧 / Common status codes by class
2xx 成功
| コード | 名前 | 意味 |
|---|---|---|
| 200 | OK | リクエスト成功、標準的な成功レスポンス |
| 201 | Created | リソースの新規作成に成功(POST等) |
| 204 | No Content | 成功したがレスポンスボディなし(DELETE等) |
3xx リダイレクト
| コード | 名前 | 意味 |
|---|---|---|
| 301 | Moved Permanently | 恒久的な移動。SEO評価が引き継がれる |
| 302 | Found | 一時的な移動。元URLの評価は保持 |
| 304 | Not Modified | キャッシュが有効。再取得不要 |
4xx クライアントエラー
| コード | 名前 | 意味 |
|---|---|---|
| 400 | Bad Request | リクエストの構文・内容が不正 |
| 401 | Unauthorized | 未認証。WWW-Authenticate必須 |
| 403 | Forbidden | 認証済みだが権限不足 |
| 404 | Not Found | リソースが存在しない |
| 405 | Method Not Allowed | 許可されていないHTTPメソッド |
| 409 | Conflict | リソースの現在の状態と競合(重複作成等) |
| 422 | Unprocessable Entity | 構文は正しいが意味的に処理不可(バリデーションエラー等) |
| 429 | Too Many Requests | レート制限超過 |
5xx サーバーエラー
| コード | 名前 | 意味 |
|---|---|---|
| 500 | Internal Server Error | サーバー内部の未分類エラー |
| 502 | Bad Gateway | プロキシがバックエンドから不正な応答を受けた |
| 503 | Service Unavailable | 過負荷・メンテナンスで一時的に処理不可 |
| 504 | Gateway Timeout | プロキシがバックエンド応答をタイムアウトまで待った |
3. 混同しやすいコードの違い / Commonly confused pairs
401 と 403 は「認証」と「認可」の違いで頻繁に取り違えられます。 詳しい判断基準は HTTP 401 と 403 の違い・使い分けで判断フローとRFC 9110の定義をまとめています。
502 / 503 / 504 はすべて5xxですが原因が異なります。502はバックエンドからの 応答自体が壊れている、503はサーバーが意図的にリクエストを拒否している(過負荷/メンテナンス)、 504はバックエンドからの応答を待ちきれなかった、という違いです。
301 / 302 はどちらもリダイレクトですが、恒久的か一時的かでSEO上の扱いが 変わります。URL構造を恒久的に変更するリニューアルなどでは301を使うのが定石です。
4. ステータスコードの確認方法 / How to check a status code
# curlでヘッダーだけ確認
curl -I https://example.com
# レスポンスコードのみ表示
curl -o /dev/null -s -w "%{http_code}\n" https://example.com
// JavaScript fetch
const res = await fetch("https://example.com/api");
console.log(res.status, res.ok); // res.okは200-299でtrue5. REST API設計での使い分け / REST API design guidance
| 操作 | 成功時 | よくある失敗時 |
|---|---|---|
| GET(取得) | 200 | 404 |
| POST(作成) | 201 | 400 / 409 / 422 |
| PUT/PATCH(更新) | 200 | 400 / 404 / 409 |
| DELETE(削除) | 204 | 404 |
Note that HTTP 200 doesn't always mean application-level success — GraphQL and some RPC-style APIs return 200 with errors embedded in the response body, so check both layers.
まとめ / Summary
HTTPステータスコードは先頭の数字でクラスを判断し、詳細は個別コードの定義で確認するのが 効率的な読み方です。特に401/403、301/302、502/503/504のような混同しやすい組は 使い分け基準を一度整理しておくと、実装時もレビュー時も迷いません。
Read status codes by class first (1xx-5xx), then drill into the specific code. The pairs worth memorizing are 401 (unauthenticated) vs. 403 (unauthorized), 301 (permanent) vs. 302 (temporary) redirects, and the three 5xx variants that distinguish a broken upstream response (502), a deliberately unavailable server (503), and a timeout (504).
関連ツール / Related tools
- HTTP Status Codes — 全ステータスコードの検索・解説
- cURL to Code — APIリクエストのコード変換