Ruby Httparty الحصول على عنوان URL أو معرف الاستجابة بعد النشر
سؤال
كيف يمكنني الحصول على عنوان URL أو معرف الاستجابة من مشروع Rails مع Httparty في نص منفصل بعد القيام بنشر؟
نص روبي:
HTTParty.post('http://localhost:3000/change_logs', parameters)
استجابة.
المحلول 3
هذا يعمل بالنسبة لي ، ربما هناك طريقة أفضل للقيام بذلك ..
get_change_log_id = HTTParty.post('http://localhost:3000/change_logs.xml', parameters).to_a
get_change_log_id.each do |r|
r.each do |sub|
sub2 = sub.to_a
sub2.each do |s|
if s.index "id"
@change_log_id = s.to_s.sub(/[i]/, '').sub(/[d]/, '')
end
end
end
end
نصائح أخرى
بعد ذلك بعامين ، وجدت طريقة للوصول إلى آخر URI من request
ميزة على response
:
url = "http://example.com/redirects/to/www"
response = HTTParty.get(url)
response.request.last_uri.to_s
# => "http://www.example.com"
لسوء الحظ ، لا يتم الاحتفاظ بهذه المعلومات بواسطة Httparty. عندما تواجه إعادة توجيه ، ستتبع إعادة التوجيه وإعادة نتيجة هذا الطلب. لن يحفظ أي من المعلومات من الطلب الأصلي.
والخبر السار هو أن السلوك مثل هذا (عادة) يمكن التنبؤ به. تقوم تطبيقات الويب بشكل عام بإعادة توجيه الأشياء نفسها بعد طلب النشر إلى عنوان URL.
ولكن إذا كنت ترغب حقًا في القيام بذلك ، فسيتعين عليك استخدام مكتبة Net/HTTP التي تأتي مع Ruby. إنه ليس أصعب بكثير من Httparty ، لذلك ليس المزيد من العمل.