從鐵軌控制檯使用Rails 4.2.5.1,這樣做的:
Rack::Utils::SYMBOL_TO_STATUS_CODE[:bad_request]
我得到400
做Rack::Utils::SYMBOL_TO_STATUS_CODE
。我可以看到所有這些狀態...
{
: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,
:im_used=>226,
:multiple_choices=>300,
:moved_permanently=>301,
:found=>302,
:see_other=>303,
:not_modified=>304,
:use_proxy=>305,
: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,
:payload_too_large=>413,
:uri_too_long=>414,
:unsupported_media_type=>415,
:range_not_satisfiable=>416,
:expectation_failed=>417,
: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
}
我認爲你不需要定義任何新的狀態。 如果需要無論如何做它,你可以使用一個初始化添加:在控制器
/my_app/config/initializers/codes.rb
Rack::Utils::SYMBOL_TO_STATUS_CODE[:my_code] = 666
然後:
class Api::V1::RegionsController < Api::V1::BaseController
def index
respond_with Region.all, status: :my_code
end
end
正如您所看到的,我返回了自定義代碼。
謝謝。看起來我們可以直接在控制器內部使用代碼。但是我想在隨機文件中使用':my_code'。具體來說,我想用在從'Grape :: API'擴展的文件中。 –
好吧,這不是問題...我想你可以使用創建自己的方法來使用'Rack :: Utils :: SYMBOL_TO_STATUS_CODE' – Leantraxxx
謝謝。我曾考慮過使用「包含/擴展」,但它似乎不起作用;( –