プログラミング

HTTPステータスコード

サーバからのレスポンスの意味を表す3桁の数字コードのこと。
特定のHTTPリクエストが正常に完了したかを示します。

HTTPレスポンス

レスポンスメッセージは大きく3種類の情報に分けられます。

  1. ステータスライン
  2. HTTPレスポンスヘッダ
  3. HTTPレスポンスボディ

ステータスコードの5つの分類

  • 100番台:情報レスポンス
  • 200番台:成功レスポンス
  • 300番台:リダイレクト
  • 400番台:クライアントエラー
  • 500番台:サーバエラー


以下で代表的なステータスコードの概要を紹介します。

100番台 情報レスポンス

処理が継続していることを示します。
100番台はあまり利用されません。

100 Continue

サーバがリクエストの受信をし拒否していないことを表します。

101 Switching Protocols

サーバはプロトコルの切り替えを要求していることを表します。

200番台 成功レスポンス

200 OK

成功時に返すステータスコードとして最も多用されます。
GETではボディにリソースが含まれます。
PUTやPOSTではボディに処理結果が含まれます。

201 Created

ユーザー新規登録、画像アップロード、DBのテーブル追加などされた際に使用されます。
ボディには新しく作成したリソースを入れることが多いですが、特に何も入れなくても良いです。

202 Accepted リクエストは受理されたが、まだ処理が完了していないことを表します。
204 No Content. レスポンスボディが空のときに返します。
205 Reset Content. ユーザーエージェントの画面をリセットする場合に返されます。

300番台 リダイレクト

300 Multiple Choices. リクエストに対して複数のレスポンスがあることを示します。
301 Moved Permanently. リクエストされたリソースのURLが恒久的に変更されたことを表します。
302 Found. リクエストされたリソースのURLが一時的に変更されたことを表します。
303 See Other リクエストされたリソースを別のURIで取得できることを示します。
307 Temporary Redirect. 一時的リダイレクトが行われることを表します。
308 Permanent Redirect 恒久的リダイレクトを表します。

400番台 クライアントエラー

400 Bad Request

リクエストが不正であることを表します。
定義されていないメソッドを使ったり、パラメータに間違いがあるなど、クライアントのリクエストがおかしい場合です。

401 Unauthorized

認証エラーを表します。
ログインが必要なページでIDやパスワードを間違えた場合、リクエストに必要なAuthorizationヘッダを含まない場合、トークンが失効、破損しているなど不正な場合に使用されます。

403 Forbidden

認可エラーを表します。
許可されていないなどの理由でクライアントのアクセス権限がなく、サーバからのレスポンスが拒否された場合に使用されます。

404 Not Found

リクエストされたリソースが存在しないことを表します。
そもそもURI自体が存在しないのか、取得対象のリソースが存在しなかったのかなど、詳細情報を示す必要があります。

405 Method Not Allowed

エンドポイントは存在するが許可されていないHTTPメソッドであることを示します。

408 Request Timeout

指定時間内にリクエストが完了しなかったことを表します。

409 Conflict

リソースの競合が発生した場合を表します。

410 Gone

リクエストされたコンテンツがサーバから永久に削除され、転送先アドレスがない場合に使用します。

413 Payload Too Large

リクエストヘッダ、ボディがサーバで定めている上限を超えていることを示します。

414 URI Too Long

クライアントがリクエストしたURIが、サーバで扱える長さを超えていることを表します。

415 Unsupported Media Type

リクエストされたデータのメディア形式にサーバーが対応しておらず、サーバがリクエストを拒否したことを表します。

429 Too Many Requests

アクセス回数が許容範囲の限界を超えた場合に返します。

500番台 サーバエラー

500 Internal Server Error

サーバ側に何らかの異常が発生し正常なレスポンスが返せないことを表します。
何らかの異常が発生しました的なエラーメッセージが返ることが多く、クライアント側では解決不能です。
サーバーのエラーログを見れば原因がわかる可能性があります。

502 Bad Gateway

ゲートウェイまたはプロキシに問題が発生していることを表します。

503 Service Unavailable

サーバがリクエストを処理する準備ができていない状態を表します。

504 Gateway Timeout

ゲートウェイとして動作するサーバが指定時間内にレスポンスを得られなかったことを表します。

505 HTTP Version Not Supported

リクエストしたHTTPプロトコルのバージョンにサーバが対応していないことを表します。

注意点

ステータスコードを意識した設計を行うことで、サーバとクライアント間の開発がスムーズに進みます。
不適切なステータスコードを割り当ててしまうと、クライアント側が混乱し、システム全体の挙動に支障をきたすこともあります。
ただし、細かくステータスコードを切り分けて作成することは難しいので基本的には200、201、404、500を使用することを意識しましょう。

-プログラミング