Ruby on Rails HTTP Status codes
Tagged under: #ruby-on-rails#development
When working on a rails application (or specially on an api) it’s not uncommon to have to handle different http status codes.
At some point, we end up getting to know some of them, but the truth is that there are a lot, and the good news is that if you’re writing a ruby on rails application, there are mappings to handle the status codes by their name.
You can quickly take a look at the list of status codes by simply loading a rails console bundle exec rails console
and then check Rack::Utils::HTTP_STATUS_CODES
or Rack::Utils::SYMBOL_TO_STATUS_CODE
to get the whole list of supported status codes on rails.
The tables below contains all the supported status codes on rails with their full names and the corresponding ruby symbols.
HTTP Informational Codes (1xx)
Code | Status | Symbol |
---|---|---|
100 | Continue | :continue |
101 | Switching Protocols | :switching_protocols |
102 | Processing | :processing |
103 | Early Hints | :early_hints |
HTTP Successful Codes (2xx)
Code | Status | Symbol |
---|---|---|
200 | OK | :ok |
201 | Created | :created |
202 | Accepted | :accepted |
203 | Non-Authoritative Information | :non_authoritative_information |
204 | No Content | :no_content |
205 | Reset Content | :reset_content |
206 | Partial Content | :partial_content |
207 | Multi-Status | :multi_status |
208 | Already Reported | :already_reported |
226 | IM Used | :im_used |
HTTP Redirection Codes (3xx)
Code | Status | Symbol |
---|---|---|
300 | Multiple Choices | :multiple_choices |
301 | Moved Permanently | :moved_permanently |
302 | Found | :found |
303 | See Other | :see_other |
304 | Not Modified | :not_modified |
305 | Use Proxy | :use_proxy |
306 | (Unused) | :“(unused)“ |
307 | Temporary Redirect | :temporary_redirect |
308 | Permanent Redirect | :permanent_redirect |
HTTP Client Error Codes (4xx)
Code | Status | Symbol |
---|---|---|
400 | Bad Request | :bad_request |
401 | Unauthorized | :unauthorized |
402 | Payment Required | :payment_required |
403 | Forbidden | :forbidden |
404 | Not Found | :not_found |
405 | Method Not Allowed | :method_not_allowed |
406 | Not Acceptable | :not_acceptable |
407 | Proxy Authentication Required | :proxy_authentication_required |
408 | Request Timeout | :request_timeout |
409 | Conflict | :conflict |
410 | Gone | :gone |
411 | Length Required | :length_required |
412 | Precondition Failed | :precondition_failed |
413 | Payload Too Large | :payload_too_large |
414 | Request-URI Too Long | :uri_too_long |
415 | Unsupported Media Type | :unsupported_media_type |
416 | Requested Range Not Satisfiable | :range_not_satisfiable |
417 | Expectation Failed | :expectation_failed |
421 | Misdirected Request | :misdirected_request |
422 | Unprocessable Entity | :unprocessable_entity |
423 | Locked | :locked |
424 | Failed Dependency | :failed_dependency |
425 | Too Early | :too_early |
426 | Upgrade Required | :upgrade_required |
428 | Precondition Required | :precondition_required |
429 | Too Many Requests | :too_many_requests |
431 | Request Header Fields Too Large | :request_header_fields_too_large |
451 | Unavailable for Legal Reasons | :unavailable_for_legal_reasons |
HTTP Server Error Codes (5xx)
Code | Status | Symbol |
---|---|---|
500 | Internal Server Error | :internal_server_error |
501 | Not Implemented | :not_implemented |
502 | Bad Gateway | :bad_gateway |
503 | Service Unavailable | :service_unavailable |
504 | Gateway Timeout | :gateway_timeout |
505 | HTTP Version Not Supported | :http_version_not_supported |
506 | Variant Also Negotiates | :variant_also_negotiates |
507 | Insufficient Storage | :insufficient_storage |
508 | Loop Detected | :loop_detected |
509 | Bandwidth Limit Exceeded | :bandwidth_limit_exceeded |
510 | Not Extended | :not_extended |
511 | Network Authentication Required | :network_authentication_required |
That’s a lot of codes 😅 I’ll try to keep that table updated as new codes get added.