Faraday: Faraday لا يقوم بتسجيل نص طلب POST

تم إنشاؤها على ٩ أبريل ٢٠١٣  ·  11تعليقات  ·  مصدر: lostisland/faraday

أنا أستخدم الكود التالي لإنشاء اتصال:

<strong i="6">@connection</strong> = Faraday.new(HOST, ssl: { verify: true }) do |faraday|
  faraday.request :url_encoded
  faraday.response :logger
  faraday.adapter Faraday.default_adapter
end

بعد ذلك ، أقوم بتنفيذ مشاركة بهذه الطريقة:

@connection.post do |request|
  request.url "#{my_uri.path}?#{my_uri.query}"
  request.headers['Content-Type'] = 'application/json'
  request.body = my_object.to_json
end

الطلب يعمل بشكل جيد. المشكلة هي أنني لا أرى نص الطلب في السجلات ، فقط عنوان URL للطلب.

التعليق الأكثر فائدة

منذ أن وجدت هذه الصفحة من خلال Google: هذا مدعوم الآن.

require "logger"

Faraday.new do |faraday|
  faraday.response :logger, ::Logger.new(STDOUT), bodies: true
end

هناك أيضًا المزيد من الإعدادات الدقيقة المتاحة إذا كنت بحاجة إليها. انظر طلب السحب.

ال 11 كومينتر

المسجل لا يعمل الجثث . ربما يمكن أن تكون هذه ميزة اختيارية ، لكن بشكل افتراضي لا أعتقد أنه يجب أن تفعل الأجسام أبدًا لأنها يمكن أن تكون كبيرة جدًا وستضخم السجل بسرعة كبيرة.

أعتقد أن هناك حالات استخدام متعددة حيث تريد تسجيل الجسم بالكامل. أحتاج هذا أيضًا. نعم ، يمكن أن تكون الهيئات كبيرة جدًا ، ولكن يمكننا استخدام مستوى السجل debug والسماح لمثيل المسجل الذي تم تمريره بالتحكم في الإسهاب.

mtarnovan متفق عليه. اتبع طلب السحب المشار إليه للحصول على التحديثات. قد نضيف الميزة ولكن يجب أن تكون قابلة للتمكين ، وستحتاج إلى نوع من الحماية لتجنب إغراق العناصر غير ذات النص العادي (مثل الاستجابات المضغوطة أو الثنائية)

: +1: مفتاح التصحيح

منذ أن وجدت هذه الصفحة من خلال Google: هذا مدعوم الآن.

require "logger"

Faraday.new do |faraday|
  faraday.response :logger, ::Logger.new(STDOUT), bodies: true
end

هناك أيضًا المزيد من الإعدادات الدقيقة المتاحة إذا كنت بحاجة إليها. انظر طلب السحب.

يبدو أن هذا لا يعمل مع طلبات url_encoded ؟

مرحبًا vemv ، ترتيب البرامج الوسيطة مهم للغاية في فاراداي.
هل يمكنك تقديم رمز التهيئة الخاص بك من فضلك ومحاولة توضيح سبب "عدم نجاحه على ما يبدو مع طلبات url_encoded
ما هو الناتج الذي تحصل عليه وما هو الناتج المتوقع؟

أعلم أن هذا قديم ، لكن لم يخطر ببال أي شخص أن OP يقوم بتسجيل الاستجابة: faraday.response :logger .

jpickwell أنت تستخدم faraday.response لأن البرنامج الوسيط logger مسجل كبرنامج وسيط للاستجابة. في الواقع ، يسجل كل من الطلبات والاستجابات

صادفت هذا للتو ؛ من خلال هذا السطر ، يبدو أنك بحاجة إلى تمرير وسيطتين لرؤية نص الطلب:

Faraday.new do |faraday|
  faraday.response :logger, ::Logger.new(STDOUT), body: true, bodies: { request: true, response: true }
end

(ما لم يتغير ذلك في التزام أحدث 🤔)

davidalpert غير ضروري ، يمكنك ببساطة تمرير bodies: true لتمكينهما كليهما ، أو استخدام القيم المنفصلة كما في المثال أعلاه للحصول على مزيد من التحكم.
أرى أن هناك خيار body: true في هذا المثال ، لكن هذا ليس خيارًا صالحًا للأسف (ربما أخطأوا في الجمع؟)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات