【发布时间】:2012-07-01 02:23:46
【问题描述】:
Sinatra 自述文件says:
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 的联合。还有POSTjust returns the form hash。对于GET,它是查询哈希。在所有三个路由中,request.params 都是空的。
我的问题:这是一个文档错误,还是我误解了如何使用request[]?目前,我的应用程序使用 env[] 方法运行良好。但我想做到“正确”。
【问题讨论】: