ステータスコード
HTTPステータスコードの意味と使い分けを理解しよう
とは
は、サーバーからの「処理結果」を3桁の数字で表したものです。

200は成功を意味しているので、上の画像はGETが成功したと分かります。
の分類
は、最初の1桁で大まかな意味が分かります。
| 範囲 | 分類 | 意味 |
|---|---|---|
| 1xx | 情報 | 処理中(あまり見かけない) |
| 2xx | 成功 | が正常に処理された |
| 3xx | リダイレクト | 別のURLに転送された |
| 4xx | クライアントエラー | に問題がある |
| 5xx | サーバーエラー | サーバー側で問題が発生した |
の規格
HTTPのは厳密に定義されていますが、規格を厳密に参照して開発するというよりも、慣習的に使われている面もあります。
サービスによっては独自のを定義したり、正式な定義とは異なる使い方をしている場合もあります。
よく使う
2xx - 成功
が正常に処理されたときのコードです。
| コード | 名前 | 意味 | 使用例 |
|---|---|---|---|
| 200 | OK | 成功 | GET, PUT, DELETEの成功 |
| 201 | Created | 新しいリソースが作成された | POSTの成功 |
| 204 | No Content | 成功したが返すデータがない | DELETEの成功 |
GET /users/1 → 200 OK(ユーザー情報を返す)
POST /users → 201 Created(作成したユーザー情報を返す)
DELETE /users/1 → 204 No Content(何も返さない)
4xx - クライアントエラー
に問題があるときのコードです。クライアント(を送った側)が原因です。
| コード | 名前 | 意味 | 使用例 |
|---|---|---|---|
| 400 | Bad | の形式が不正 | 必須項目が欠けている、JSONの形式が間違っている |
| 401 | Unauthorized | 認証が必要 | ログインしていない、トークンが無効 |
| 403 | Forbidden | アクセス権限がない | 他人のデータを編集しようとした |
| 404 | Not Found | リソースが見つからない | 存在しないURLにアクセス、削除済みのデータ |
| 409 | Conflict | 競合が発生した | 同じメールアドレスで登録しようとした |
401 と 403 の違い
- 401 Unauthorized: 「あなたが誰か分からない」(認証の問題)
- 403 Forbidden: 「あなたが誰かは分かるが、権限がない」(認可の問題)
例えば、ログインしていない状態でアクセスすると 401、ログインしているが権限がないページにアクセスすると 403 です。
5xx - サーバーエラー
サーバー側で問題が発生したときのコードです。サーバーが原因です。
| コード | 名前 | 意味 | 使用例 |
|---|---|---|---|
| 500 | Internal Server Error | サーバー内部でエラーが発生 | コードのバグ、予期しない例外 |
| 502 | Bad Gateway | 中継サーバーが不正な応答を受けた | バックエンドサーバーがダウン |
| 503 | Service Unavailable | サービスが一時的に利用不可 | メンテナンス中、過負荷 |
5xxエラーが出たら、サーバーのログを確認して原因を調査する必要があります。
API開発者としては、クライアントがエラーを適切に処理できるよう、状況に応じた正確なを返すことが重要です。
セクションまとめ
- ✓は処理結果を3桁の数字で表す
- ✓2xx(成功)、4xx(クライアントエラー)、5xx(サーバーエラー)が基本
- ✓API開発では適切なを返すことが重要