HTTP ステータスコード
HTTP レスポンスの結果を 3 桁の数値で表す標準コードで、1xx〜5xx の 5 カテゴリに分類される
HTTP ステータスコードとは
HTTP ステータスコードは、サーバーがクライアントに返す 3 桁の数値で、リクエストの処理結果を表す。1xx〜5xx の 5 カテゴリに分類される。
カテゴリ
カテゴリを以下にまとめる。
| カテゴリ | 意味 | 例 |
|---|---|---|
| 1xx | 情報 | 100 Continue |
| 2xx | 成功 | 200 OK, 201 Created |
| 3xx | リダイレクト | 301 Moved, 304 Not Modified |
| 4xx | クライアントエラー | 400 Bad Request, 404 Not Found |
| 5xx | サーバーエラー | 500 Internal Error, 503 Unavailable |
よく使うステータスコード
よく使うステータスコードを以下にまとめる。
| コード | 意味 | 使い方 |
|---|---|---|
| 200 | OK | GET の成功 |
| 201 | Created | POST でリソース作成 |
| 204 | No Content | DELETE の成功 (ボディなし) |
| 301 | Moved Permanently | URL の恒久的な移動 |
| 304 | Not Modified | キャッシュが有効 |
| 400 | Bad Request | バリデーションエラー |
| 401 | Unauthorized | 認証が必要 |
| 403 | Forbidden | 権限がない |
| 404 | Not Found | リソースが存在しない |
| 409 | Conflict | 競合 (楽観ロック失敗) |
| 429 | Too Many Requests | レート制限 |
| 500 | Internal Server Error | サーバー内部エラー |
| 502 | Bad Gateway | 上流サーバーのエラー |
| 503 | Service Unavailable | 一時的に利用不可 |
API Gateway のステータスコード
API Gateway は Lambda タイムアウト時に 504、Lambda の未処理例外で 502、スロットリング時に 429、Cognito 認証失敗時に 401 を返す。Lambda 自体が返すステータスコードとは別に、API Gateway が自動的に付与するコードがある点に注意が必要だ。
リダイレクトの使い分け
恒久的な URL 移動には 301 (リンクジュースが移転先に引き継がれる) を使い、一時的な移動には 302 を使う。POST メソッドを維持したままリダイレクトする場合は、一時的なら 307、恒久的なら 308 を使う。
リトライの判断
429 (レート制限)、500 (サーバー内部エラー)、503 (一時的に利用不可) はリトライ対象で、特に 429 は Retry-After ヘッダーを尊重する。400 (バリデーションエラー) や 404 (リソースなし) はリクエスト自体を修正する必要があるため、リトライしても意味がない。
HTTP ステータスコードを扱う関連書籍も多い。
この記事は役に立ちましたか?
関連用語
REST API
HTTP メソッドとリソース指向の URL で設計する Web API のアーキテクチャスタイル
API Gateway
API のエントリーポイントとして認証、スロットリング、ルーティングを一元管理する AWS サービス
指数バックオフとは - リトライ間隔の設計とジッター付き実装例
指数バックオフはリトライ間隔を 2 倍ずつ増やして障害時の負荷集中を防ぐ戦略。ジッター追加の理由と Go/Python/TypeScript での実装パターンを解説
スコープ
変数や関数が参照可能な範囲を定義するプログラミングの基本概念
API スロットリング
API へのリクエスト数を制限し、サーバーの過負荷を防ぐトラフィック制御手法
エラーメッセージとは - 読み方・原因特定・設計のベストプラクティス
エラーメッセージはプログラムが問題を検出した際に原因と場所を伝える通知。スタックトレースの読み方・ユーザー向けメッセージの設計指針を解説