はじめに
Railsを勉強している中で status オプションが出てきたので、整理してまとめてみます。
:statusオプションは一言でいうと、
HTTPレスポンスのステータスコードを指定するためのオプションです。
Railsではコントローラでレスポンスを返すときに使って、
「このリクエストは成功なのか?エラーなのか?リダイレクトなのか?」みたいな意味をクライアントに伝える役割があります。
本記事では、成功レスポンス(HTTP 200番台)のHTTPステータスコードの意味と、それを表すシンボルについてまとめていきたいと思います。
他のHTTP レスポンスステータスコードはこちら
・情報レスポンス編
・リダイレクトメッセージ編
・クライアントエラーレスポンス編
・サーバーエラーレスポンス編
status: :ok
HTTPステータスコード :200
「問題なく処理できリクエストが成功した」という意味。
リクエストごとに成功が異なる
・GET: リソースが読み込まれ、メッセージ本文で転送された
・HEAD: メッセージ本文がなく、表現ヘッダーがレスポンスに含まれている
・PUT または POST: 操作の結果を表すリソースがメッセージ本文で送信される
・TRACE: メッセージ本文に、サーバーが受け取ったリクエストメッセージが含まれている
status: :created
HTTPステータスコード :201
「新しいリソースの作成が成功した」という合図。
⇒クライアント:「新しいユーザーを作って!」と送る(POST、PUT)
⇒サーバーが正常に処理して「作成できたよ!」と返す
status: :accepted
HTTPステータスコード :202
「受付は完了。でも処理はまだ終わっていない状態」という意味。
⇒クライアントがリクエストを送る
⇒サーバー:「受け付けたけど、まだ終わってないよ」
時間が掛かる処理に使う
・画像や動画の変換
・大量データの処理
・メール送信(バックグラウンド処理)
status: :non_authoritative_information
HTTPステータスコード :203
「リクエストは正常に処理された。しかし、返された情報がオリジナルのサーバーからではなく、変換プロキシによって変更・加工されたものである」という意味。
⇒クライアント:「データちょうだい」とリクエスト
⇒サーバー:「データはあるけど、これはコピーやキャッシュの情報だよ」と知らせる
status: :no_content
HTTPステータスコード :204
「成功はしているけど、画面に表示するデータは何もない状態」という意味。
⇒クライアント:リクエストを出す
⇒サーバー:「成功したよ。でも返す内容はないよ」と返す。
status: :reset_content
HTTPステータスコード :205
「成功したから、画面の入力内容を初期状態に戻してね」という意味。
⇒クライアント:フォームに入力して送信
⇒サーバー:「処理は成功したから、入力フォームなどをリセットしてね」と通知する。
status: :partial_content
HTTPステータスコード :206
「リクエストされたデータの一部だけ返す」という意味。
使用する場面
・ユーザーが動画の途中から再生を開始したい場合
・ダウンロードが中断されたとき、途中から再開する場合
status: :multi_status
HTTPステータスコード :207
「1つのリクエストに対して、結果が複数ある」という意味。
⇒クライアント:「この複数のA、B、Cファイルをまとめて処理して!」とリクエスト
⇒サーバー:Aファイル → 成功
Bファイル → 失敗
Cファイル → 成功
それぞれの結果をまとめて返す。
status: :already_reported
HTTPステータスコード :208
「同じ情報を何度も返さないように、省略しているよ」ということ。
使用する場面
・同じデータが複数の場所に紐づいているとき
・一覧取得で重複が発生しそうなとき
・WebDAV(ファイル管理系の仕組み)で使われる
status: :im_used
HTTPステータスコード :226
「前のデータとの差分(変わった部分)だけ返す」という意味。
⇒クライアント(以前のデータを持っている):「変更された部分だけ教えて!」とリクエスト
⇒サーバー:変更したところだけを返す
使用する場面
・データの更新が一部だけのとき
・通信量を減らしたいとき
参考元