ステータスコードを読み解こう
ストーリー
「先輩、よく"404エラー"って聞くんですが、あれは何なんですか?」
「HTTPのステータスコードだよ。サーバーが"このページは見つかりません"って答えているんだ」
「数字にちゃんと意味があるんですね」
「そう。ステータスコードが読めると、エラーの原因がすぐに分かるようになるよ」
ステータスコードとは
HTTPレスポンスに含まれる 3桁の数字 で、リクエストの結果を表します。
HTTP/1.1 200 OK
│ │
│ └── ステータスメッセージ
└────── ステータスコード
ステータスコードの分類
最初の1桁で大まかな意味が決まります。
| 範囲 | 分類 | 意味 |
|---|---|---|
| 1xx | 情報 | リクエストを受け取った(処理中) |
| 2xx | 成功 | リクエストが正常に処理された |
| 3xx | リダイレクト | 別の場所に移動が必要 |
| 4xx | クライアントエラー | リクエストに問題がある |
| 5xx | サーバーエラー | サーバー側に問題がある |
覚え方
2xx = 成功(にっこり) → OK!
3xx = 移動(さんぽ) → あっちに行って
4xx = クライアントの間違い(しまった) → あなたのリクエストがおかしい
5xx = サーバーの問題(ごめん) → こちらの問題です
重要なステータスコード
2xx 系(成功)
| コード | メッセージ | 意味 |
|---|---|---|
| 200 | OK | リクエスト成功。データを返す |
| 201 | Created | リソースが新しく作成された |
| 204 | No Content | 成功したがレスポンスボディなし |
GET /users → 200 OK(ユーザー一覧を返す)
POST /users → 201 Created(新しいユーザーが作成された)
DELETE /users/1 → 204 No Content(削除成功、返すデータなし)
3xx 系(リダイレクト)
| コード | メッセージ | 意味 |
|---|---|---|
| 301 | Moved Permanently | 恒久的に移動した |
| 302 | Found | 一時的に移動した |
| 304 | Not Modified | 変更なし(キャッシュを使ってOK) |
http://example.com → 301 → https://example.com
(HTTPからHTTPSへの自動転送)
4xx 系(クライアントエラー)
| コード | メッセージ | 意味 | よくある原因 |
|---|---|---|---|
| 400 | Bad Request | リクエストが不正 | 入力データの形式エラー |
| 401 | Unauthorized | 認証が必要 | ログインしていない |
| 403 | Forbidden | アクセス権がない | 権限が足りない |
| 404 | Not Found | リソースが見つからない | URLの間違い、ページが存在しない |
| 405 | Method Not Allowed | メソッドが許可されていない | GETのみのURLにPOSTを送った |
| 429 | Too Many Requests | リクエストが多すぎる | API の制限に達した |
GET /存在しないページ → 404 Not Found
POST /users(未ログイン)→ 401 Unauthorized
DELETE /admin/data(権限なし)→ 403 Forbidden
5xx 系(サーバーエラー)
| コード | メッセージ | 意味 | よくある原因 |
|---|---|---|---|
| 500 | Internal Server Error | サーバー内部エラー | プログラムのバグ |
| 502 | Bad Gateway | 中間サーバーのエラー | バックエンドサーバーが応答しない |
| 503 | Service Unavailable | サービス利用不可 | メンテナンス中、過負荷 |
| 504 | Gateway Timeout | タイムアウト | バックエンドサーバーが応答しない |
サーバーのプログラムにバグ → 500 Internal Server Error
サーバーがメンテナンス中 → 503 Service Unavailable
4xx と 5xx の違い
エラーの原因がどちら側にあるかで分かれます。
| エラー | 原因 | 対応 |
|---|---|---|
| 4xx | クライアント(あなた) が間違っている | URLやリクエストを修正する |
| 5xx | サーバー(相手) に問題がある | サーバー管理者が対応する |