HTTPステータスコード チートシート
AI作成データ
このコンテンツのデータはAIが公式資料や辞書を参照して作成しました。正確さを心がけていますが、誤りが含まれる可能性があります。HTTPステータスコードの一覧チートシート。1xx〜5xxの全カテゴリをカバーし、各コードの意味・使い所・APIデザインのベストプラクティスを日本語で解説。
全HTTPステータスコードの意味と使い所を日本語でまとめて参照
1xx 情報レスポンス
リクエストを受け取り、処理を継続していることを示すステータスコードです。クライアントは追加のアクションを待つ必要があります。
| コード | 名前 | 説明 | よくある使用場面 |
|---|---|---|---|
100 | Continue | リクエストの最初の部分を受け取った。クライアントは残りを送信してよい | 大きなリクエストボディを送る前の確認 |
101 | Switching Protocols | サーバーがプロトコルの切り替えに同意した | HTTP から WebSocket への切り替え |
103 | Early Hints | 最終レスポンスの前にリソースのプリロードを開始できる | CSS や JS ファイルの先行読み込み指示 |
2xx 成功レスポンス
リクエストが正常に受信・理解・処理されたことを示すステータスコードです。
| コード | 名前 | 説明 | よくある使用場面 |
|---|---|---|---|
200 | OK | リクエストが成功した | GET でリソースを取得、PUT で更新成功 |
201 | Created | リクエストが成功し、新しいリソースが作成された | POST で新規リソースを作成した場合 |
202 | Accepted | リクエストを受け付けたが、処理はまだ完了していない | 非同期処理のジョブ投入 |
204 | No Content | リクエストは成功したが、返すコンテンツがない | DELETE でリソースを削除した場合 |
206 | Partial Content | リクエストされた範囲の一部だけを返す | 動画ストリーミング、大きなファイルの分割ダウンロード |
3xx リダイレクト
リクエストを完了するために追加のアクション(別のURLへの移動)が必要であることを示すステータスコードです。
| コード | 名前 | 説明 | よくある使用場面 |
|---|---|---|---|
301 | Moved Permanently | リソースが恒久的に新しいURLに移動した | ドメイン変更、URL構造の恒久変更。SEO評価が引き継がれる |
302 | Found | リソースが一時的に別のURLにある | メンテナンス中の一時転送。元URLが将来復活する場合 |
303 | See Other | 別のURLにGETでアクセスするよう指示する | フォーム送信(POST)後に結果ページへリダイレクト |
304 | Not Modified | リソースが変更されていないのでキャッシュを使える | 条件付きリクエスト(If-Modified-Since)への応答 |
307 | Temporary Redirect | 一時的リダイレクト。HTTPメソッドを変更しない | POST リクエストをメソッドを維持したまま一時転送 |
308 | Permanent Redirect | 恒久的リダイレクト。HTTPメソッドを変更しない | API エンドポイントの恒久移動(メソッド維持が必要な場合) |
4xx クライアントエラー
クライアント側のリクエストに問題があることを示すステータスコードです。リクエストの修正が必要です。
| コード | 名前 | 説明 | よくある使用場面 |
|---|---|---|---|
400 | Bad Request | リクエストの構文が不正でサーバーが理解できない | 不正な JSON、必須パラメータの欠如 |
401 | Unauthorized | 認証が必要。有効な認証情報が提供されていない | ログインしていないユーザーが保護されたリソースにアクセス |
403 | Forbidden | 認証済みだがアクセス権限がない | 管理者専用ページへの一般ユーザーからのアクセス |
404 | Not Found | リクエストされたリソースが見つからない | 存在しないURLへのアクセス、削除済みリソースの参照 |
405 | Method Not Allowed | リソースは存在するが、使用されたHTTPメソッドは許可されていない | GET のみ対応のエンドポイントへの POST リクエスト |
408 | Request Timeout | サーバーがリクエストの到着を待ちきれなかった | クライアントの送信が遅く、サーバー側のタイムアウト |
409 | Conflict | リクエストが現在のリソースの状態と競合する | 楽観的ロックでの更新衝突、重複データの作成 |
410 | Gone | リソースが恒久的に削除され、転送先もない | 廃止されたAPIエンドポイント(404と異なり復活しない) |
413 | Content Too Large | リクエストボディがサーバーの許容サイズを超えている | アップロードファイルのサイズ制限超過 |
415 | Unsupported Media Type | サーバーがリクエストのメディアタイプをサポートしていない | JSON を期待するAPIに XML を送信 |
418 | I'm a teapot | ティーポットにコーヒーを淹れさせようとした(ジョーク) | RFC 2324 で定義されたエイプリルフールのジョーク。実務では使わない |
422 | Unprocessable Content | 構文は正しいが、意味的に処理できない | バリデーションエラー(メールアドレスの形式不正など) |
429 | Too Many Requests | 一定時間内のリクエスト回数が上限を超えた | APIのレート制限。Retry-After ヘッダーで再試行時刻を通知 |
451 | Unavailable For Legal Reasons | 法的理由によりリソースを提供できない | 政府の検閲や著作権による制限。コード名は小説「華氏451度」に由来 |
5xx サーバーエラー
サーバー側の問題でリクエストを処理できなかったことを示すステータスコードです。クライアントのリクエスト自体は正当です。
| コード | 名前 | 説明 | よくある使用場面 |
|---|---|---|---|
500 | Internal Server Error | サーバー内部で予期しないエラーが発生した | 未処理の例外、サーバーのバグ |
501 | Not Implemented | サーバーがリクエストメソッドをサポートしていない | 未実装の機能やAPIエンドポイント |
502 | Bad Gateway | ゲートウェイまたはプロキシが上流サーバーから不正な応答を受けた | リバースプロキシの背後のアプリケーションがダウン |
503 | Service Unavailable | サーバーが一時的にリクエストを処理できない | メンテナンス中、過負荷状態。Retry-After ヘッダーで復旧時刻を通知 |
504 | Gateway Timeout | ゲートウェイまたはプロキシが上流サーバーからの応答を待ちきれなかった | バックエンドの処理が遅く、プロキシのタイムアウトを超過 |
APIデザインでの使い分け
REST APIを設計する際に迷いやすいステータスコードの使い分けをまとめます。
CRUDとステータスコード
RESTful APIの各操作で返すべき推奨ステータスコードです。
text
GET /users -> 200 OK(一覧取得)
GET /users/123 -> 200 OK(詳細取得) / 404 Not Found
POST /users -> 201 Created(作成成功) + Location ヘッダー
PUT /users/123 -> 200 OK(更新成功) / 204 No Content
PATCH /users/123 -> 200 OK(部分更新成功)
DELETE /users/123 -> 204 No Content(削除成功)認証・認可のエラー
text
401 Unauthorized = 認証されていない(ログインが必要)
例: トークンなし、トークン期限切れ
403 Forbidden = 認証済みだが権限がない
例: 一般ユーザーが管理者APIにアクセスバリデーションエラー
text
400 Bad Request = リクエスト構文が不正
例: JSONのパースに失敗
422 Unprocessable Content = 構文は正しいが意味的にNG
例: email が空文字、age が負の数リダイレクトの使い分け
text
301 Moved Permanently = 恒久的。メソッドがGETに変わる可能性あり
308 Permanent Redirect = 恒久的。メソッドを維持する
302 Found = 一時的。メソッドがGETに変わる可能性あり
307 Temporary Redirect = 一時的。メソッドを維持する
303 See Other = POST後にGETへリダイレクト(PRGパターン)レート制限
text
429 Too Many Requests
推奨ヘッダー:
Retry-After: 60 (60秒後に再試行可能)
X-RateLimit-Limit: 100 (制限回数)
X-RateLimit-Remaining: 0 (残り回数)
X-RateLimit-Reset: 1672531200(リセット時刻のUNIXタイムスタンプ)こんなときに使えます
シーンREST APIを実装中にどのステータスコードを返すべきか迷ったとき
得られる情報201(作成成功)・204(削除成功)・422(バリデーションエラー)など、用途に合ったコードをすぐ確認できる
APIデザインのベストプラクティスも合わせて掲載
よくある質問
401と403の違いは何ですか?
401 Unauthorizedは認証(Authentication)されていない状態で、ログインが必要であることを意味します。403 Forbiddenは認証済みだがアクセス権限(Authorization)がない状態です。ログインしていないユーザーには401、ログイン済みでも権限のないリソースへのアクセスには403を使います。
301と302の違いは何ですか?
301 Moved Permanentlyは恒久的なリダイレクトで、SEOのランキング評価が新URLに引き継がれます。302 Foundは一時的なリダイレクトで、元のURLが将来復活する可能性がある場合に使います。301を誤って302で実装するとSEOに悪影響が出る場合があります。
400と422の使い分けを教えてください
400 Bad Requestはリクエストの構文自体が不正な場合(JSONが壊れているなど)に使います。422 Unprocessable Contentはリクエストの構文は正しいが、内容が意味的に処理できない場合(バリデーションエラーなど)に使います。REST APIでは入力検証エラーには422が適切です。