Saya menggunakan kode berikut untuk membuat koneksi:
<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
Kemudian, saya melakukan posting dengan cara ini:
@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
Permintaan berfungsi dengan baik. Masalahnya adalah saya tidak melihat badan permintaan di log, hanya url permintaan.
Logger tidak melakukan tubuh . Mungkin ini bisa menjadi fitur opsional, tetapi secara default saya tidak berpikir itu seharusnya melakukan tubuh karena mereka bisa sangat besar dan akan mengembang log dengan sangat cepat.
Saya pikir ada beberapa kasus penggunaan di mana Anda ingin mencatat seluruh tubuh. saya juga butuh ini. Ya, badan bisa sangat besar, tapi kita bisa menggunakan level log debug
dan membiarkan instance logger yang lewat mengontrol verbositas.
@mtarnovan Setuju. Ikuti permintaan tarik yang dirujuk untuk pembaruan. Kami mungkin menambahkan fitur tersebut tetapi fitur tersebut harus ikut serta, dan fitur tersebut perlu memiliki semacam pelindung untuk menghindari membuang badan non-plaintext (seperti respons terkompresi atau biner)
:+1: Kunci untuk debugging
Karena saya menemukan halaman ini melalui Google: ini sekarang didukung.
require "logger"
Faraday.new do |faraday|
faraday.response :logger, ::Logger.new(STDOUT), bodies: true
end
Ada juga pengaturan yang lebih halus yang tersedia jika Anda membutuhkannya. Lihat permintaan tarik.
Ini sepertinya tidak berfungsi untuk permintaan url_encoded
?
Hai @vemv , urutan middlewares sangat penting di Faraday.
Bisakah Anda memberikan kode inisialisasi koneksi Anda dan mencoba menjelaskan dengan lebih baik mengapa "tampaknya tidak berfungsi untuk permintaan url_encoded
"?
Apa output yang Anda dapatkan dan apa yang diharapkan?
Saya tahu ini sudah tua, tetapi apakah tidak terpikir oleh siapa pun bahwa OP mencatat respons: faraday.response :logger
.
@jpickwell Anda menggunakan faraday.response
karena middleware logger
terdaftar sebagai middleware respons. Pada kenyataannya, ini mencatat permintaan dan tanggapan
baru saja menemukan ini; pada baris ini tampaknya Anda harus melewati dua argumen untuk melihat isi permintaan:
Faraday.new do |faraday|
faraday.response :logger, ::Logger.new(STDOUT), body: true, bodies: { request: true, response: true }
end
(kecuali itu telah berubah dalam komit yang lebih baru )
@davidalpert itu tidak perlu, Anda cukup meneruskan bodies: true
untuk mengaktifkan keduanya, atau menggunakan nilai terpisah seperti pada contoh di atas untuk memiliki kontrol lebih.
Saya melihat ada opsi body: true
dalam contoh itu, tapi sayangnya itu bukan opsi yang valid (mungkin mereka salah memilih jamak?)
Komentar yang paling membantu
Karena saya menemukan halaman ini melalui Google: ini sekarang didukung.
Ada juga pengaturan yang lebih halus yang tersedia jika Anda membutuhkannya. Lihat permintaan tarik.