はじめに
Railsを勉強している中で status オプションが出てきたので、整理してまとめてみます。
:statusオプションは一言でいうと、
HTTPレスポンスのステータスコードを指定するためのオプションです。
Railsではコントローラでレスポンスを返すときに使って、
「このリクエストは成功なのか?エラーなのか?リダイレクトなのか?」みたいな意味をクライアントに伝える役割があります。
本記事では、リダイレクトメッセージ(HTTP 300番台)のHTTPステータスコードの意味と、それを表すシンボルについてまとめていきたいと思います。
他のHTTP レスポンスステータスコードはこちら
・情報レスポンス編
・成功レスポンス編
・クライアントエラーレスポンス編
・サーバーエラーレスポンス編
status: :multiple_choices
HTTPステータスコード :300
「いくつか候補があるから、自分で選んでね」という意味。
⇒クライアント:「このページ見せて」とリクエストを送る。
⇒サーバー:「いくつか候補(日本語版、英語版、場所、形式)があるよ」と返す時に送る。
300は明確な選好が得にくく、実務では避けられることが多い
status: :moved_permanently
HTTPステータスコード :301
「ページの場所が完全に変わったから、新しいURLにアクセスしてね」という意味。
⇒クライアント:古いURLにアクセス
⇒サーバー:「このページは完全に引っ越したから、これからは新しいURLを使ってね!!」と返すときに使う。
status: :found
HTTPステータスコード :302
「今だけ別の場所にあるから、そっちを見てね」という意味。
⇒クライアント:あるURLにアクセス
⇒サーバー:「URLを一時的に移動したよ!!」と伝えるときに返す。
status: :see_other
HTTPステータスコード :303
「処理結果は別ページにあって、GETでアクセスして見てね」ということ。
⇒クライアント:フォームで送信(POST)
⇒サーバー:「処理完了。結果は別のURLを見に行ってね」と伝えるときに返す
status: :not_modified
HTTPステータスコード :304
「データは更新されてないから、キャッシュをそのまま使ってね」という意味。
⇒クライアント:「このデータ変わった?」と確認する
⇒サーバー:「変わってないから、前のデータ使ってOK」と伝えるときに使う。
status: :temporary_redirect
HTTPステータスコード :307
「一時的に場所が変わったけど、リクエストのやり方はそのままで送ってね」という意味。
⇒クライアント:POSTでリクエスト送信
⇒サーバー:「URLを一時的に移動したよ!!。またPOSTで送ってね」と案内するときに使用する。
status: :permanent_redirect
HTTPステータスコード :308
「ページの場所が完全に変わったから、新しいURLにリクエストのやり方は変えずにアクセスしてね」という意味。
⇒クライアント:POSTでリクエスト送信
⇒サーバー:「URLを完全に移動したよ!!。またPOSTで送ってね」と案内するときに使用する。
参考元