El Sinatra README says:La solicitud de Sinatra ["SOME_HEADER"] no funciona en POST; doc bug?
request["SOME_HEADER"] # value of SOME_HEADER header
Dada esta aplicación:
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
pasa la primera especificación; fallan los dos siguientes:
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
En cuanto a la fuente, Sinatra no hace nada con []
; se implementa en Rack como la unión de GET
y POST
. Y POST
just returns the form hash. Para GET
, es el hash de consulta. En las tres rutas, request.params
está vacío.
Mi pregunta es: ¿Este es un error de doc, o no entiendo cómo usar request[]
? Por ahora, mi aplicación está funcionando bien con el método env[]
. Pero quiero hacerlo "bien".
Creo que tienes razón, ya que [la fuente de Rack en sí misma parece usar 'env'] (https://github.com/rack/rack/blob/master/lib/rack/request.rb#L308) –
Acabo de [abrir un problema con Sinatra para el archivo README] (https://github.com/sinatra/sinatra/issues/542). –
sí, mira mi respuesta –