के साथ POST/GET अनुरोधों को रीडायरेक्ट करता है मैं सर्वर माइग्रेट कर रहा हूं लेकिन दुर्भाग्यवश पुराने सर्वर आईपी को मेरे आईफोन ऐप के अंदर हार्डकोड किया गया है। जाहिर है, मैं एक अद्यतन सबमिट करने जा रहा हूं जो मेरे नए सर्वर पर एपीआई एंडपॉइंट सेट करता है, लेकिन इस बीच मुझे पुराने सर्वर पर एक ऐप सेट करने की आवश्यकता है जो सभी अनुरोधों को नए सर्वर पर रीडायरेक्ट करता है। मैंने सुना है कि सिनात्रा इसके लिए सही होगा।सिनात्रा ऐप जो पैरामीटर
require 'sinatra'
get "/foo/bar" do
redirect "http://new-server.com/foo/bar", 303
end
post "/foo/bar" do
redirect "http://new-server.com/foo/bar", 303
end
समस्या यह है कि ये अनुरोध के साथ जीईटी या पोस्ट पैरामीटर को आगे नहीं बढ़ाते हैं। मैंने सिनात्रा दस्तावेज़ पर पढ़ा है कि आप उन्हें सीधे यूआरएल में डालकर (जीईटी अनुरोधों के लिए काम करता है), या सत्र चर सेट करके कर सकते हैं।
मैन्युअल रूप से रीडायरेक्ट यूआरएल में रीडायरेक्ट यूआरएल रीडायरेक्ट के लिए जाने का एकमात्र तरीका है ताकि उन्हें रीडायरेक्ट यूआरएल में वापस लाने के लिए जीईटी पैराम को पार्सिंग और स्वरूपित किया जा सके? आपको POST पैरामीटर को कैसे आगे बढ़ाना है? एक require "lib/overload_hash"
, require "net/http"
और require "uri"
require 'sinatra'
के तहत (का उपयोग कर शुद्ध/http बेहतर समाधान)
प्लेस
class Hash
def to_url_params
elements = []
keys.size.times do |i|
elements << "#{keys[i]}=#{values[i]}"
end
elements.join('&')
end
end
संपादित करें:
सी [इस पोस्ट] (http://stackoverflow.com/questions/798710/how-to-turn-a-ruby-hash-into-http-params) पार्स करने और स्वरूपण को कम करने। पोस्ट के लिए, आप उन्हें हमेशा जीईटी पैराम में बदल सकते हैं, और स्वीकार करने के लिए अपने सर्वर साइड लॉजिक को बदल सकते हैं। मुझे यकीन नहीं है कि आपके उपयोग के मामले में कोई बेहतर तरीका है या नहीं। – Jonah