जब मैं कर्ल आदेशरैक अनुरोध में कैसे पढ़ने के लिए पोस्ट डेटा
curl -v -H "Content-type: application/json" -X POST -d '{"name":"abc", "id":"12", "subject":"my subject"}' http://localhost:9292
चलाने डेटा के साथ एक पोस्ट अनुरोध, मेरे कोड प्रिंट बाहर {}
मेरी रैक आवेदन करने के लिए भेजने के लिए। यह नीचे दिए गए कोड में puts req.POST()
से आ रहा है।
यह पोस्ट डेटा के बजाय {}
क्यों प्रिंट करता है? और मैं अपने रैक एप्लिकेशन में POST डेटा को सही तरीके से कैसे एक्सेस करूं?
require 'json'
class Greeter
def call(env)
req = Rack::Request.new(env)
if req.post?
puts req.POST()
end
[200, {"Content-Type" => "application/json"}, [{x:"Hello World!"}.to_json]]
end
end
run Greeter.new
एफवाईआई - मिडलवेयर से आई/ओ स्ट्रीम पढ़ना रेल ऐप तोड़ सकता है। जब आपको मूल्य मिल गया है, तो आपको स्ट्रीम को रीसेट करने के लिए 'req.env [' rack.input '] चलाने के लिए सुनिश्चित करना होगा। – lookitsatravis
@lookitsatravis: धन्यवाद, मैंने इसके बारे में उत्तर में एक नोट जोड़ा है। ओपी रेल या अन्य ढांचे के बिना सीधे रैक का उपयोग कर रहा है, इसलिए यह उनके मामले में लागू नहीं होगा। यदि आप रेल का उपयोग कर रहे हैं, तो 'एप्लिकेशन/जेसन' अनुरोध पढ़ने के अन्य तरीके होंगे –
@Niel: सहमत! मेरे विशेष उपयोग मामले में, मैं [रैक-हमला] (https://github.com/kickstarter/rack-attack) का उपयोग कर रहा हूं और मेरे लॉगिन थ्रॉटल चेक में से एक की आवश्यकता है कि रेलवे इसे पढ़ने से पहले मैं अनुरोध निकाय को पार्स कर दूं। एज केस, सुनिश्चित करने के लिए, लेकिन यह मुझे इस पोस्ट और मेरी टिप्पणी के लिए नेतृत्व किया। चीयर्स! – lookitsatravis