Ruby on Railsにおけるstatusコードのシンボル集『いつ・なにをつかう？』

# はじめに
Ruby on Railsではこのように`Symbol`を渡すことでHTTPStatusCodeを決めます。
そこで，どういうときにどのシンボルを使い，どのStatusCodeを返すかをまとめました。

`render status: :<Symbol>`

# シンボル集

| Response Class | HTTP Status Code | Symbol | Usage |
|----------------|------------------|--------|-------|
| Informational | 100 | :continue | クライアントからの継続的なリクエストに対して、サーバーがリクエストを受け取り、処理を続行することを示す。 |
|  | 101 | :switching_protocols | クライアントからのプロトコル切り替えリクエストを受け入れたことを示す。 |
|  | 102 | :processing | リクエストを処理中であり、まだ完了していないことを示す。 |
| Success | 200 | :ok | リクエストが成功し、レスポンスとともに要求されたリソースが返されることを示す。 |
|  | 201 | :created | リクエストが成功し、新しいリソースが作成されたことを示す。 |
|  | 202 | :accepted | リクエストは受け付けられたが、まだ処理は完了していないことを示す。 |
|  | 203 | :non_authoritative_information | リクエストは成功したが、返されたメタ情報が元のサーバーではなく、ローカルまたは第三者のコピーから収集されたことを示す。 |
|  | 204 | :no_content | リクエストは成功したが、返すべきコンテンツがないことを示す。 |
|  | 205 | :reset_content | リクエストは成功し、クライアント側でフォームをリセットするように指示する。 |
|  | 206 | :partial_content | リクエストは成功し、部分的なコンテンツが返されることを示す。 |
|  | 207 | :multi_status | 複数のリソースが返されることを示す。 |
|  | 208 | :already_reported | DAVの一部であり、リソースがすでに前のレスポンスで列挙されたことを示す。 |
|  | 226 | :im_used | サーバーがリクエストを処理し、応答がインスタンス操作の結果であることを示す。 |
| Redirection | 300 | :multiple_choices | リクエストされたリソースが複数の選択肢を持つことを示す。 |
|  | 301 | :moved_permanently | リクエストされたリソースが永続的に別のURLに移動したことを示す。 |
|  | 302 | :found | リクエストされたリソースが一時的に別のURLに移動したことを示す。 |
|  | 303 | :see_other | リクエストされたリソースが別のURLにあることを示す。 |
|  | 304 | :not_modified | リクエストされたリソースが変更されていないことを示す。 |
|  | 305 | :use_proxy | リクエストされたリソースはプロキシを介してアクセスする必要があることを示す。 |
|  | 306 | :reserved | 将来のために予約されている。 |
|  | 307 | :temporary_redirect | リクエストされたリソースが一時的に別のURLに移動したことを示す。 |
|  | 308 | :permanent_redirect | リクエストされたリソースが永続的に別のURLに移動したことを示す。 |
| Client Error | 400 | :bad_request | リクエストが不正であることを示す。 |
|  | 401 | :unauthorized | 認証が必要であることを示す。 |
|  | 402 | :payment_required | 将来の支払いシステムのために予約されている。 |
|  | 403 | :forbidden | リクエストが拒否されたことを示す。 |
|  | 404 | :not_found | リクエストされたリソースが見つからないことを示す。 |
|  | 405 | :method_not_allowed | リクエストで指定されたHTTPメソッドが許可されていないことを示す。 |
|  | 406 | :not_acceptable | リクエストされたリソースがリクエストヘッダーで指定された条件に適合しないことを示す。 |
|  | 407 | :proxy_authentication_required | プロキシ認証が必要であることを示す。 |
|  | 408 | :request_timeout | リクエストがタイムアウトしたことを示す。 |
|  | 409 | :conflict | リクエストがリソースの現在の状態と競合することを示す。 |
|  | 410 | :gone | リクエストされたリソースが永続的に削除されたことを示す。 |
|  | 411 | :length_required | Content-Lengthヘッダーが必要であることを示す。 |
|  | 412 | :precondition_failed | リクエストで指定された前提条件がサーバー上で満たされていないことを示す。 |
|  | 413 | :request_entity_too_large | リクエストエンティティが大きすぎることを示す。 |
|  | 414 | :request_uri_too_long | リクエストURIが長すぎることを示す。 |
|  | 415 | :unsupported_media_type | リクエストエンティティのメディアタイプがサーバーでサポートされていないことを示す。 |
|  | 416 | :requested_range_not_satisfiable | リクエストされた範囲がリソースの範囲外であることを示す。 |
|  | 417 | :expectation_failed | Expect requestヘッダーで指定された期待値がサーバーで満たすことができないことを示す。 |
|  | 422 | :unprocessable_entity | リクエストは適切な形式だが、セマンティックエラーが含まれていることを示す。 |
|  | 423 | :locked | リクエストされたリソースがロックされていることを示す。 |
|  | 424 | :failed_dependency | 前のリクエストが失敗したため、このリクエストも失敗したことを示す。 |
|  | 426 | :upgrade_required | クライアントがリクエストをアップグレードする必要があることを示す。 |
|  | 428 | :precondition_required | リクエストに前提条件が必要であることを示す。 |
|  | 429 | :too_many_requests | ユーザーがある時間枠内に多くのリクエストを送信したことを示す。 |
|  | 431 | :request_header_fields_too_large | リクエストヘッダーフィールドが大きすぎることを示す。 |
| Server Error | 500 | :internal_server_error | サーバー内部エラーが発生したことを示す。 |
|  | 501 | :not_implemented | リクエストされた機能がサーバーで実装されていないことを示す。 |
|  | 502 | :bad_gateway | ゲートウェイまたはプロキシサーバーがアップストリームサーバーから無効な応答を受け取ったことを示す。 |
|  | 503 | :service_unavailable | サーバーが一時的に過負荷やメンテナンスのためにリクエストを処理できないことを示す。 |
|  | 504 | :gateway_timeout | ゲートウェイまたはプロキシサーバーがアップストリームサーバーからの応答を待っている間にタイムアウトしたことを示す。 |
|  | 505 | :http_version_not_supported | リクエストで使用されたHTTPバージョンがサーバーでサポートされていないことを示す。 |
|  | 506 | :variant_also_negotiates | 透明なコンテンツネゴシエーションの結果、リソースが内部的にも交渉可能であることを示す。 |
|  | 507 | :insufficient_storage | WebDAVの一部であり、リクエストを完了するのに十分なストレージがないことを示す。 |
|  | 508 | :loop_detected | サーバーがリクエストを処理している間に無限ループを検出したことを示す。 |
|  | 510 | :not_extended | リクエストに対してさらに拡張が必要であることを示す。 |
|  | 511 | :network_authentication_required | クライアントがネットワークアクセスを得るために認証を必要とすることを示す。 |


参考
https://blog.toshimaru.net/rails-http-status-symbols/

https://qiita.com/terufumi1122/items/997e24dde87f807e3944