Коды состояния HTTP в виде атомов в put_status

Я пытаюсь написать действие контроллера с Phoenix и Elixir. Когда все идет по плану, я устанавливаю код состояния http с помощью этой строки:

 put_status :ok

и это имеет для меня огромный смысл. Он прекрасно соответствует коду 200 http. Тем не менее, я работаю над незеленым путем и не могу понять, какие атомы использовать для других http-кодов. Я нашел ссылку на :not_found где-то в Интернете, что, как я предполагаю, соответствует 404.

Я пытаюсь вернуть /questions/tagged/http-status-code-422. В настоящее время я могу выполнить работу с помощью:

put_status 422

но я бы предпочел использовать соответствующий атом, если он существует.


person jaydel    schedule 01.09.2016    source источник
comment
Путем полного угадывания я обнаружил, что :unprocessable_entity — это то, что мне нужно, но я до сих пор не знаю, где найти их список. Если такой вещи не существует, я могу просто продолжать пытаться угадать атомы.   -  person jaydel    schedule 01.09.2016
comment
Разумно ли предположить, что атом становится официальным текстом кода состояния HTTP в нижнем регистре, а пробелы заменяются символами подчеркивания?   -  person jaydel    schedule 01.09.2016


Ответы (1)


Полный список доступен в документации для Plug.Conn.Status. 422, как вы уже догадались, :unprocessable_entity.

Известные коды состояния

Следующие коды состояния могут быть заданы как атомы с их соответствующим значением, показанным далее:

  • :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
person Dogbert    schedule 01.09.2016
comment
Для справки, я добавил эту страницу в закладки. Я хотел бы дать вам дополнительные баллы за это :) - person jaydel; 07.09.2016