サーバからのレスポンスの意味を表す3桁の数字コードのこと。
特定のHTTPリクエストが正常に完了したかを示します。
HTTPレスポンス
レスポンスメッセージは大きく3種類の情報に分けられます。
- ステータスライン
- HTTPレスポンスヘッダ
- 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を使用することを意識しましょう。