HTTP ステータスコード

HTTP レスポンスの結果を 3 桁の数値で表す標準コードで、1xx〜5xx の 5 カテゴリに分類される

HTTPAPI

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 ステータスコードを扱う関連書籍も多い。

関連用語