यह 2020 है - किसी को Net::HTTP
भी अधिक का उपयोग नहीं करना चाहिए और सभी उत्तर ऐसा कहते प्रतीत होते हैं, अधिक उच्च स्तर के मणि का उपयोग करें जैसे कि फैराडे - गालूब
उस ने कहा, मुझे जो करना पसंद है वह है HTTP एपीआई कॉल के आसपास एक आवरण, कुछ ऐसा जिसे कहा जाता है
rv = Transporter::FaradayHttp[url, options]
क्योंकि यह मुझे अतिरिक्त निर्भरता के बिना HTTP कॉल नकली करने की अनुमति देता है, अर्थात:
if InfoSig.env?(:test) && !(url.to_s =~ /localhost/)
response_body = FakerForTests[url: url, options: options]
else
conn = Faraday::Connection.new url, connection_options
जहां फकर कुछ इस तरह नजर आए
मुझे पता है कि HTTP मॉकिंग / स्टबिंग फ्रेमवर्क हैं, लेकिन कम से कम जब मैंने पिछली बार शोध किया तो उन्होंने मुझे कुशलता से अनुरोधों को मान्य करने की अनुमति नहीं दी और वे सिर्फ HTTP के लिए थे, उदाहरण के लिए कच्चे टीसीपी एक्सचेंजों के लिए नहीं, यह प्रणाली मुझे अनुमति देती है सभी एपीआई संचार के लिए एकीकृत रूपरेखा।
यह मानते हुए कि आप बस त्वरित और गंदे को हैश में बदलना चाहते हैं, एक दूरस्थ मेजबान को एक एपीआई का परीक्षण करने के लिए जोंस को भेजें और माणिक की प्रतिक्रिया को पार्स करें, यह अतिरिक्त रत्नों को शामिल किए बिना शायद सबसे तेज़ तरीका है:
JSON.load `curl -H 'Content-Type:application/json' -H 'Accept:application/json' -X POST localhost:3000/simple_api -d '#{message.to_json}'`
उम्मीद है कि यह कहे बिना चला जाता है, लेकिन उत्पादन में इसका उपयोग न करें।
req = Net::HTTP::Post.new(uri.path, initheader = {'Content-Type' =>'application/json'})