답변:
여기에 설명 된대로 HTTP 헤더를 get () 메소드의 세 번째 인수로 지정할 수 있어야합니다.
http://api.rubyonrails.org/classes/ActionDispatch/Integration/RequestHelpers.html#method-i-get
그리고 여기
http://api.rubyonrails.org/classes/ActionDispatch/Integration/Session.html#method-i-process
따라서 다음과 같이 시도해 볼 수 있습니다.
get '/my/path', nil, {'HTTP_ACCEPT' => "application/json"}
:authorization
.
get my_resource_path, params: {}, headers: { 'HTTP_ACCEPT' => "application/json" }
`
나는 이것을 Test :: Unit에서 사용했다 :
@request.env['HTTP_ACCEPT'] = "*/*, application/youtube-client"
get :index
ActionController::TestCase
Cookie
헤더 해시에 이름이 지정된 키를 사용하려고 시도했지만 (브라우저에서 전송하는 것이기 때문에) 작동하지 않습니다. 그런 다음 request.keys
이라는 키를 보았습니다 HTTP_COOKIE
. 그것을 사용하여 작동했습니다. 그들은 실제로 이것을 더 잘 문서화해야합니다.
이것은 요청 사양이 아닌 컨트롤러 사양에 적용됩니다.
request.headers["My Header"] = "something"
request.headers
또는request.env
헤더를 별도로 설정해야합니다
request.headers["Accept"] = "application/json"
get / delete / ....를 통해 전송을 시도하면 rails4의 완전한 쓰레기이며 헤더로 보내지 않고 매개 변수로 보내지기 때문에 머리에 통증을 유발합니다.
{"Accept" => "application/json"}
함께 rspec 사용 Rack::Test::Methods
header 'X_YOUR_HEADER_VAR', 'val'
get '/path'
헤더 var는 다음과 같이 나타납니다. X-Your-Header-Var
Test::Unit
RSpec이 아닌을위한 것입니다.
ndefined method 'header'
나에게 오류 가 발생합니다.
RSpec 3에서는 다음 구문을 사용할 수 있습니다
get my_resource_path, params: {}, headers: { 'HTTP_ACCEPT' => "application/json" }
공식 Rspec 문서에 설명 된 대로 (링크는 v3.7을 가리킴 )
xhr: true
헤더와 헤더를 모두 보내려면 다음 과 같이해야합니다.
my_headers = { "HTTP_ACCEPT": "application/json" }
get my_path, xhr: true, headers: my_headers
headers =
될 my_headers =
?
다음과 같은 것을 시도하십시오 :
get :index, :format => 'json'
format=json
하는 경우 쿼리 매개 변수로 추가 됩니다. 헤더 필드와 동일하지 않습니다.
get '/my/path', nil, {'HTTP_ACCEPT' => "application/json"}