Die Sinatra README says:Sinatra Anfrage ["SOME_HEADER"] funktioniert nicht auf POST; doc Fehler?
request["SOME_HEADER"] # value of SOME_HEADER header
Angesichts dieser App:
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
Die erste Spezifikation geht; die nächsten zwei fehlschlagen:
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
an der Quelle der Suche, nicht Sinatra nicht wirklich etwas zu tun mit []
; Es ist im Rack als die Union von GET
und POST
implementiert. Und POST
just returns the form hash. Für GET
ist es der Abfrage-Hash. In allen drei Routen ist request.params
leer.
Meine Frage: Ist das ein doc-Fehler, oder verstehe ich nicht, wie man request[]
verwendet? Im Moment funktioniert meine Anwendung gut mit der env[]
Methode. Aber ich möchte es "richtig machen".
Ich denke, Sie haben Recht, da [die Rack-Quelle selbst scheint 'env'] (https://github.com/rack/rack/blob/master/lib/rack/request.rb#L308) –
Ich habe gerade [ein Problem mit Sinatra für die README geöffnet] (https://github.com/sinatra/sinatra/issues/542). –
Ja, siehe meine Antwort –