Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTTP status codes as atoms in put_status

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.

like image 498
jaydel Avatar asked Sep 01 '16 12:09

jaydel


People also ask

How many HTTP status codes are there?

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.

What is the HTTP status code for status accepted?

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.

Can I use custom HTTP status codes?

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.


1 Answers

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
like image 122
Dogbert Avatar answered Oct 19 '22 06:10

Dogbert