SINATRA README говорит:
request["SOME_HEADER"] # value of SOME_HEADER header
Учитывая это приложение:
require 'sinatra'
post '/env' do
env['HTTP_X_FOO']
end
post '/request' do
request['X-Foo']
end
post '/request_rack_http_format' do
request['HTTP_X_FOO']
end
Первая спецификация проходит; следующие две ошибки:
describe "Sinatra should place the header in" do
before(:all) do
header 'X-Foo', 'Bar'
end
example "env" do
post '/env'
last_response.body.should == 'Bar' #pass
end
example "request[]" do
post '/request'
last_response.body.should == 'Bar' #fail; got ""
end
example "request[] (rack format)" do
post '/request_rack_http_format'
last_response.body.should == 'Bar' #fail; got ""
end
end
Глядя на источник, Sinatra фактически ничего не делает с []
; он реализован в Rack как объединение GET
и POST
. И POST
просто возвращает хэш формы. Для GET
это хеш запроса. Во всех трех маршрутах request.params
пуст.
Мой вопрос: Является ли это ошибкой doc, или я не понимаю, как использовать request[]
? На данный момент мое приложение отлично работает с методом env[]
. Но я хочу сделать это "правильно".