0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Rails] statusオプション クライアントエラーレスポンス編

0
Posted at

はじめに

Railsを勉強している中で status オプションが出てきたので、整理してまとめてみます。
:statusオプションは一言でいうと、
HTTPレスポンスのステータスコードを指定するためのオプションです。

Railsではコントローラでレスポンスを返すときに使って、
「このリクエストは成功なのか?エラーなのか?リダイレクトなのか?」みたいな意味をクライアントに伝える役割があります。
本記事では、クライアントエラーレスポンス(HTTP 400番台)のHTTPステータスコードの意味と、それを表すシンボルについてまとめていきたいと思います。

他のHTTP レスポンスステータスコードはこちら
情報レスポンス編
成功レスポンス編
リダイレクトメッセージ編
サーバーエラーレスポンス編

status: :bad_request

HTTPステータスコード :400
リクエストの書き方や内容が間違っている」という意味
⇒クライアント:リクエストを送る
⇒サーバー:「内容がまちがって、処理できない」というときに送る。

status: :unauthorized

HTTPステータスコード :401
まだ認証(ログインなど)が済んでいない状態」を示す。
⇒クライアント:ログインせずにページへアクセス
⇒サーバー:「このページはログインが必要だよ」と伝えるために送る。

status: :payment_required

HTTPステータスコード :402
⇒クライアント:ウェブページを閲覧する
⇒サーバー:「このページを閲覧するには支払いが必要だよ」と伝えるために送る。

多くのサイトでは直接的な課金を要求する前に、ログインや登録を促すメッセージを表示することが一般的

status: :forbidden

HTTPステータスコード :403
ログインはしているけど、アクセスする権限がない状態」という意味
⇒クライアント:管理者ページにアクセス
⇒サーバー:「あなたにはこの権限はないよ」ということを伝える

status: :forbidden

HTTPステータスコード :404
指定されたページやデータが存在しない」という意味。
⇒クライアント:URLにアクセス
⇒サーバー:「その場所には何もないよ」と伝える時に送る。

status: :method_not_allowed

HTTPステータスコード :405
URLは合ってるけど、リクエストの方法が間違っている」という意味。
⇒クライアント:「このデータ削除して!(DELETE)」とリクエスト
⇒サーバー:「削除は許可してないよ」と伝える時に送る。

status: :not_acceptable

HTTPステータスコード :406
欲しい形式や条件に合うデータが見つからない」とう意味。
⇒クライアント:「JSONでちょうだい」とリクエスト
⇒サーバー:「HTMLしかないよ」というときに送る。

status: :proxy_authentication_required

HTTPステータスコード :407
目的のサーバーに行く前に、途中のサーバーで認証が必要である」という意味。
⇒クライアント:サイトを訪れる
⇒サーバー:「先に認証してね」と伝えるときに送る。

status: :request_timeout

HTTPステータスコード :408
リクエストが遅すぎてタイムアウトした」という意味。
⇒クライアント:サーバーに接続、でもリクエストをなかなか送らない
⇒サーバー:「待ち時間オーバー」と、判断したときに送る。

status: :conflict

HTTPステータスコード :409
他の変更と衝突していて、そのままでは処理できない状態」という意味。
⇒ユーザー1:データAを編集
⇒ユーザー2:データAを編集
⇒サーバー:「内容が競合しているから、そのままじゃ処理できないよ」という意味

status: :gone

HTTPステータスコード :410
以前はあったけど、今は完全に消えている」という意味。
⇒クライアント:ページにアクセス
⇒サーバー:「そのページはもう削除されて、どこにもないよ」と伝えるとき送る。

status: :gone

HTTPステータスコード :411
送るデータの長さ情報がないから処理できない」という意味。
⇒クライアント:データを送る
⇒サーバー:「サイズ分からないと困るよ」というときに送る。

status: :precondition_failed

HTTPステータスコード :412
リクエストに付けた条件が、サーバーの状態と合っていない」という意味。
⇒クライアント:このファイルが前と同じ状態なら上書きする
⇒サーバー:「他の人が先に更新したから使えない」と伝えるときに送る。

status: :payload_too_large

HTTPステータスコード :413
送ってきたデータが大きすぎて受け取れないよ」という意味。
⇒クライアント:大きなファイルを送信
⇒サーバー:「サイズ制限を超えて処理できないよ」と伝えるときに送る。

status: :uri_too_long

HTTPステータスコード :414
URLが長すぎてエラーになっている状態」という意味。
⇒クライアント:長いURLでリクエストする
⇒サーバー:「長すぎて扱えないよ」と伝えるときに使用する。

status: :unsupported_media_type

HTTPステータスコード :415
送ったデータの形式がサーバーに合っていない」という意味。
⇒クライアント:データを送る(例:XML)
⇒サーバー:「このデータの形式に、対応していないよ」と伝えるときに使用する。

status: :range_not_satisfiable

HTTPステータスコード :416
欲しい範囲を指定していたけど、その範囲がズレているよ」という意味。
⇒クライアント:「このファイルの100〜200バイトだけちょうだい」とリクエスト
        でも実際のファイルは50バイトしかない
⇒サーバー:「その範囲は存在しないよ」と伝えるときに使用する。

status: :expectation_failed

HTTPステータスコード :417
リクエストに書かかれた期待を、満たすことができなかった」という意味。
⇒クライアント:「こういう条件で処理してね」
⇒サーバー:「その期待には応えられないよ」と伝えるときに使う。

status: :misdirected_request

HTTPステータスコード :421
リクエスト先のサーバーを違っている」という意味。
⇒クライアント:リクエストを送る
        サーバーは、そのURLやドメインに対応していない
⇒サーバー:「送るサーバー間違えてるよ」と伝えるときに使用する。

status: :unprocessable_entity

HTTPステータスコード :422
リクエストの形式は正しいけど、内容が間違っている」という意味。
⇒クライアント:データを送る(形式はOK)
⇒サーバー:「この内容じゃ処理できないよ」と言うときに送る。

status: :locked

HTTPステータスコード :423
他の人や処理が使っているので、操作できないよ」という意味。
⇒クライアント:ファイルを編集しようとする
       しかし、誰かがファイルを編集中
⇒サーバー:「他の人が使っているので、操作できないよ」と伝えるときに使う。

status: :failed_dependency

HTTPステータスコード :424
前の処理が失敗したので、この処理もできないよ」という意味。
⇒クライアント:ファイルを編集しようとする
       しかし、その前の処理(例:ロック取得や認証)が失敗
⇒サーバー:「前の処理が失敗しているので、この操作はできないよ」と伝えるときに使う。

status: :upgrade_required

HTTPステータスコード :426
プロトコルをアップグレードする必要がある」という意味。
⇒クライアント:リクエストを送る(HTTPなど)
⇒サーバー:「そのプロトコルには対応してないよ」と伝えるときに送る。

status: :precondition_required

HTTPステータスコード :428
安全に更新するための条件が必要」という意味。
⇒クライアント:データを取得する
⇒サーバー:「確認できる条件を付けてから更新してね」というときに送る。

status: :too_many_requests

HTTPステータスコード :429
一定時間内のリクエスト回数を超えた」という意味。
⇒クライアント:何度もリクエストを送る
⇒サーバー:「短時間で送りすぎ、少し時間をあけて」と伝えるときに送る。

status: :request_header_fields_too_large

HTTPステータスコード :431
リクエストのヘッダーサイズが大きすぎる」という意味。
⇒クライアント:リクエストを送る(ヘッダーが大量・巨大)
⇒サーバー:「情報が多すぎて処理できないよ」と伝えるときに送る。
原因:Cookieが増えすぎ、長すぎる認証トークン

status: :unavailable_for_legal_reasons

HTTPステータスコード :451
法律・規制によってアクセスが制限されている」という意味。
⇒クライアント:ページにアクセスする
⇒サーバー:「このページは法律上の理由で公開できない」と伝えるときに送る。

参考元

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?