ストーリー
あなた
先輩、よく”404エラー”って聞くんですが、あれは何なんですか?
あ
先
先輩
HTTPのステータスコードだよ。サーバーが”このページは見つかりません”って答えているんだ
先
先輩
そう。ステータスコードが読めると、エラーの原因がすぐに分かるようになるよ
ステータスコードとは
HTTPレスポンスに含まれる 3桁の数字 で、リクエストの結果を表します。
graph LR
A["HTTP/1.1"] --- B["200\nステータスコード"] --- C["OK\nステータスメッセージ"]
style A fill:#f3f4f6,stroke:#9ca3af,color:#6b7280
style B fill:#d1fae5,stroke:#059669,stroke-width:2px,color:#065f46
style C fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e40af
ステータスコードの分類
最初の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 | サーバー(相手) に問題がある | サーバー管理者が対応する |
「404 Not Found」→ あなたが間違ったURLにアクセスした
「500 Internal Server Error」→ サーバーのプログラムにバグがある
実務でよく遭遇するパターン
Webサイト閲覧時
200 → ページが正常に表示される
301 → http:// から https:// に自動転送
404 → 「お探しのページは見つかりませんでした」
503 → 「ただいまメンテナンス中です」
API開発時
200 → データの取得に成功
201 → データの作成に成功
400 → リクエストのJSON形式が間違っている
401 → APIキーが間違っている or 期限切れ
403 → このAPIへのアクセス権がない
429 → APIの呼び出し回数制限に達した
500 → サーバー側のバグ
まとめ
| ポイント | 内容 |
|---|
| 2xx | 成功(200 OK、201 Created) |
| 3xx | リダイレクト(301 永久移動、302 一時移動) |
| 4xx | クライアントエラー(400, 401, 403, 404) |
| 5xx | サーバーエラー(500, 502, 503) |
| 4xx vs 5xx | 4xxはクライアントの問題、5xxはサーバーの問題 |
チェックリスト
次のステップへ
ステータスコードが読めるようになりましたね。
次のセクションでは、curl コマンド
を使って、実際にHTTPリクエストを送ってみます。
推定読了時間: 30分