はじめに
Railsを勉強している中で status オプションが出てきたので、整理してまとめてみます。
:statusオプションは一言でいうと、
HTTPレスポンスのステータスコードを指定するためのオプションです。
Railsではコントローラでレスポンスを返すときに使って、
「このリクエストは成功なのか?エラーなのか?リダイレクトなのか?」みたいな意味をクライアントに伝える役割があります。
本記事では、サーバーエラーレスポンス(HTTP 500番台)のHTTPステータスコードの意味と、それを表すシンボルについてまとめていきたいと思います。
他のHTTP レスポンスステータスコードはこちら
・情報レスポンス編
・成功レスポンス編
・リダイレクトメッセージ編
・クライアントエラーレスポンス編
status: :internal_server_error
HTTPステータスコード :500
「サーバーの中で何か問題が起きたよ」という意味。
⇒クライアント:リクエストを送る
⇒サーバー:「内容がまちがって、処理できない」というときに送る。
status: :internal_server_error
HTTPステータスコード :501
「その機能(やり方)はサーバーが対応してないよ」という意味。
⇒クライアント:特定のリクエスト(例:PUTやPATCHなど)を送る
⇒サーバー:「その機能はまだ作ってない・その方法は対応していない」というときに送る。
status: :bad_gateway
HTTPステータスコード :502
「サーバー同士のやりとりでエラーが起きたよ」という意味。
⇒クライアント:リクエストをサーバーAに送る
⇒サーバーA:サーバーBにお願いする
⇒サーバーB:変な返事をする or 返事しない
⇒サーバーA:「正しいレスポンスがもらえなかった」というときに送る
status: :service_unavailable
HTTPステータスコード :503
「今はサーバーが使えない状態だよ」という意味。
⇒クライアント:リクエストを送る
⇒サーバー:「今は対応できない(メンテ中・混雑中)」と伝えるときに送る。
status: :gateway_timeout
HTTPステータスコード :504
「裏のサーバーの返事が遅すぎて、待てなかったよ」という意味。
⇒クライアント:リクエストを送る
⇒サーバーA:サーバーBにお願いする
⇒サーバーB:返事が遅い or 来ない
⇒サーバーA:「待ちきれないのでタイムアウト」というときに送る
status: :http_version_not_supported
HTTPステータスコード :505
「そのHTTPのバージョンには対応してないよ」という意味。
⇒クライアント:リクエストを送る(古いHTTPバージョン)
⇒サーバー:「そのバージョンは使えない」と伝えるときに送る。
status: :variant_also_negotiates
HTTPステータスコード :506
「サーバーの設定ミスで、うまく処理できないよ」という意味。
⇒クライアント:リクエストを送る
⇒サーバー:「サーバーの設定ミスでレスポンスを決められない」と伝えるとき送る。
status: :insufficient_storage
HTTPステータスコード :507
「サーバーの保存容量が不足している」という意味。
⇒クライアント:データを保存しようとする
⇒サーバー:「サーバーの保存容量が不足している」と伝えるときに送る。
status: :loop_detected
HTTPステータスコード :508
「無限ループが発生した」という意味。
⇒クライアント:リクエストを送る
⇒サーバー:同じ処理を何度も繰り返してしまうときに送る。
status: :not_extended
HTTPステータスコード :510
「リクエストに追加情報が必要」という意味。
⇒クライアント:リクエストを送る
⇒サーバー:「その内容だけじゃ処理できないから、必要な情報を追加して」と伝えるときに送る。
status: :network_authentication_required
HTTPステータスコード :511
「ネットワークを使うには、先にログインしてね」という意味
⇒クライアント:インターネットにアクセスしようとする
⇒ネットワーク:「このネットワークは認証が必要」と伝えるときに送る。
参考元