Faraday: Faraday tidak mencatat badan permintaan POST

Dibuat pada 9 Apr 2013  ·  11Komentar  ·  Sumber: lostisland/faraday

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.

Komentar yang paling membantu

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.

Semua 11 komentar

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?)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat