tanaka101

ステータスコード

HTTPステータスコードの意味と使い分けを理解しよう

とは

は、サーバーからの「処理結果」を3桁の数字で表したものです。

GETリクエストのステータスコード

200は成功を意味しているので、上の画像はGETが成功したと分かります。

の分類

は、最初の1桁で大まかな意味が分かります。

範囲分類意味
1xx情報処理中(あまり見かけない)
2xx成功が正常に処理された
3xxリダイレクト別のURLに転送された
4xxクライアントエラーに問題がある
5xxサーバーエラーサーバー側で問題が発生した

の規格

HTTPのは厳密に定義されていますが、規格を厳密に参照して開発するというよりも、慣習的に使われている面もあります。

サービスによっては独自のを定義したり、正式な定義とは異なる使い方をしている場合もあります。

よく使う

2xx - 成功

が正常に処理されたときのコードです。

コード名前意味使用例
200OK成功GET, PUT, DELETEの成功
201Created新しいリソースが作成されたPOSTの成功
204No Content成功したが返すデータがないDELETEの成功
GET /users/1    → 200 OK(ユーザー情報を返す)
POST /users     → 201 Created(作成したユーザー情報を返す)
DELETE /users/1 → 204 No Content(何も返さない)

4xx - クライアントエラー

に問題があるときのコードです。クライアント(を送った側)が原因です。

コード名前意味使用例
400Bad の形式が不正必須項目が欠けている、JSONの形式が間違っている
401Unauthorized認証が必要ログインしていない、トークンが無効
403Forbiddenアクセス権限がない他人のデータを編集しようとした
404Not Foundリソースが見つからない存在しないURLにアクセス、削除済みのデータ
409Conflict競合が発生した同じメールアドレスで登録しようとした

401 と 403 の違い

  • 401 Unauthorized: 「あなたが誰か分からない」(認証の問題)
  • 403 Forbidden: 「あなたが誰かは分かるが、権限がない」(認可の問題)

例えば、ログインしていない状態でアクセスすると 401、ログインしているが権限がないページにアクセスすると 403 です。

5xx - サーバーエラー

サーバー側で問題が発生したときのコードです。サーバーが原因です。

コード名前意味使用例
500Internal Server Errorサーバー内部でエラーが発生コードのバグ、予期しない例外
502Bad Gateway中継サーバーが不正な応答を受けたバックエンドサーバーがダウン
503Service Unavailableサービスが一時的に利用不可メンテナンス中、過負荷

5xxエラーが出たら、サーバーのログを確認して原因を調査する必要があります。

API開発者としては、クライアントがエラーを適切に処理できるよう、状況に応じた正確なを返すことが重要です。

セクションまとめ

  • は処理結果を3桁の数字で表す
  • 2xx(成功)、4xx(クライアントエラー)、5xx(サーバーエラー)が基本
  • API開発では適切なを返すことが重要