HTTPステータスコードの分類|2xx〜5xxの意味とよく使う番号

HTTPステータスコードの分類|2xx〜5xxの意味とよく使う番号

APIを叩いてエラーが返ってきたとき、私が最初に見るのはステータスコードです。

ただ、200や404くらいは分かっても、301・401・429・502あたりになると「これ何だっけ」と毎回つまずいていました。

数字をひとつずつ暗記するのは大変なので、今回は最初の1桁で大づかみに分類する考え方を、エンジニア目線で整理します。

ステータスコードは「最初の1桁」で5つに分かれる

HTTPステータスコードはRFC 9110で定義された3桁の数字で、先頭の数字を見れば大まかな意味がつかめます。

  • 1xx(情報):処理が継続中であることの通知
  • 2xx(成功):リクエストは正常に処理された
  • 3xx(リダイレクト):別の場所へ案内する、または追加の操作が必要
  • 4xx(クライアントエラー):こちらが送ったリクエストに問題がある
  • 5xx(サーバーエラー):サーバー側で問題が起きている

ここで効いてくるのが、4xxは「こちら側」、5xxは「向こう側」という切り分けです。

原因の所在が1桁目で見当つくので、ログを追う前にあたりをつけられるのが大きいところ。

実務でよく出会う番号

全部を覚える必要はなくて、よく出る番号だけ押さえておけば実務はだいたい回ります。

  • 200 OK:成功の定番
  • 201 Created:POSTでリソースを新規作成できた
  • 204 No Content:成功したが返す本文はない
  • 301 Moved Permanently / 302 Found:恒久・一時的なリダイレクト
  • 304 Not Modified:キャッシュが有効で再取得は不要
  • 400 Bad Request:リクエストの形式がおかしい
  • 401 Unauthorized:認証が通っていない(未ログイン状態)
  • 403 Forbidden:認証は済んでいるが権限がない
  • 404 Not Found:リソースが見つからない
  • 429 Too Many Requests:レート制限に引っかかった
  • 500 Internal Server Error:サーバー内部で起きたエラー
  • 502 Bad Gateway / 503 Service Unavailable:上流の不調や一時的な応答不可

401と403は混同しやすい番号ですが、401は「あなたが誰か分からない」、403は「誰かは分かるが入れない」と覚えると整理できます。

4xxと5xxを切り分けると対応が早い

障害対応でまず見るべきは、4xxか5xxかという一点です。

4xxで真っ先に疑うのは、パラメータや認証ヘッダ、URLといった自分のリクエスト側。

一方の5xxはサーバー側の問題なので、時間を置いてリトライする価値があります

特に429や503は、少し待ってから再試行すると回復することが多い番号でした。

この再試行のコツは、指数バックオフとして別記事で整理しています。

APIのリトライは「指数バックオフ+ジッター」で考える

手元で素早く確認したいときは、curlでhttp_codeだけを抜き出すのが便利です。

# レスポンス本文は捨ててステータスコードだけ表示
curl -o /dev/null -s -w "%{http_code}\n" https://example.com
# 200 が返れば成功、404 や 500 ならそこから原因を切り分ける

最後に

ステータスコードは、先頭1桁で誰の問題かを見分けるのが第一歩になります。

細かい番号で迷ったら、MDNのステータスコード一覧RFC 9110を引けば、まず間違いありません。

以上です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA