I'm trying to write a controller action with Phoenix and Elixir. When everything goes according to plan, I set the http status code with this line in:
put_status :ok
and that makes a world of sense to me. It maps nicely to a 200 http code. However, I'm working on the not-green-path and cannot for the life of me figure out what atoms to use for the other http codes. I found a reference to :not_found online somewhere, which I'm assuming maps to a 404.
I'm trying to return a http-status-code-422. Currently, I can get the job done with:
put_status 422
but I'd rather use the appropriate atom if such a thing exists.
The value of HTTP status codes There are 16 status codes defined in RFC1945 (the HTTP 1.0 specification). These status codes were motivated by pragmatism. Web browsers are generic, in that they can be used to talk to any web server.
The HyperText Transfer Protocol (HTTP) 202 Accepted response status code indicates that the request has been accepted for processing, but the processing has not been completed; in fact, processing may not have started yet.
Yes, as long as you respect the class -- that is, 2xx for success, 4xx for Client error, etc. So you can return custom 4XX error codes (preferably those that are unassigned) for your own application's error conditions.
The complete list is available in the documentation for Plug.Conn.Status
. 422 is, as you guessed, :unprocessable_entity
.
Known status codes
The following status codes can be given as atoms with their respective value shown next:
:continue
- 100:switching_protocols
- 101:processing
- 102:ok
- 200:created
- 201:accepted
- 202:non_authoritative_information
- 203:no_content
- 204:reset_content
- 205:partial_content
- 206:multi_status
- 207:already_reported
- 208:instance_manipulation_used
- 226:multiple_choices
- 300:moved_permanently
- 301:found
- 302:see_other
- 303:not_modified
- 304:use_proxy
- 305:reserved
- 306:temporary_redirect
- 307:permanent_redirect
- 308:bad_request
- 400:unauthorized
- 401:payment_required
- 402:forbidden
- 403:not_found
- 404:method_not_allowed
- 405:not_acceptable
- 406:proxy_authentication_required
- 407:request_timeout
- 408:conflict
- 409:gone
- 410:length_required
- 411:precondition_failed
- 412:request_entity_too_large
- 413:request_uri_too_long
- 414:unsupported_media_type
- 415:requested_range_not_satisfiable
- 416:expectation_failed
- 417:im_a_teapot
- 418:misdirected_request
- 421:unprocessable_entity
- 422:locked
- 423:failed_dependency
- 424:upgrade_required
- 426:precondition_required
- 428:too_many_requests
- 429:request_header_fields_too_large
- 431:internal_server_error
- 500:not_implemented
- 501:bad_gateway
- 502:service_unavailable
- 503:gateway_timeout
- 504:http_version_not_supported
- 505:variant_also_negotiates
- 506:insufficient_storage
- 507:loop_detected
- 508:not_extended
- 510:network_authentication_required
- 511
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With