सिनात्रा README says:सिनात्रा अनुरोध ["SOME_HEADER"] POST पर काम नहीं करता है; डॉक्टर बग?
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
स्रोत को देखते हुए, सिनात्रा वास्तव में []
साथ कुछ भी नहीं है; इसे रैक में GET
और POST
के संघ के रूप में लागू किया गया है। और POST
just returns the form hash। GET
के लिए यह क्वेरी हैश है। सभी तीन मार्गों में, request.params
खाली है।
मेरा प्रश्न: इस एक दस्तावेज़ बग है, या मैं गलत समझ रहा हूँ कैसे request[]
उपयोग करने के लिए? अभी के लिए, मेरा आवेदन env[]
विधि के साथ ठीक काम कर रहा है। लेकिन मैं इसे "सही" करना चाहता हूं।
मुझे लगता है कि आप सही हैं क्योंकि [रैक स्रोत स्वयं 'env'] का उपयोग करता है [https://github.com/rack/rack/blob/master/lib/rack/request.rb#L308) –
मैंने अभी [रीडमे के लिए सिनात्रा के साथ एक मुद्दा खोला] [https://github.com/sinatra/sinatra/issues/542)। –
हाँ, मेरा जवाब देखें –