RoR.宝石法拉第.如何用正文重新发送帖子查询



有下一个问题:

我得到一些post查询与主体(http://api1.com/products),并验证它:

products = JSON.parse(request.body.read)
JSON::Validator.validate!(products_schema, products)

如果身体数据被验证,我尝试用Faraday将其重新发送到另一个API (http://api2.com/products):

f_headers = { ... }
conn = Faraday.new(headers: f_headers) do |f|
f.request  :url_encoded
f.response :logger
f.adapter  Faraday.default_adapter
end
resp = conn.post('http://api2.com/products') do |req|
req.body = request.body.read
end
resp.body

但是如果我尝试在POST上获取body http://api2.com/products,我会在params中获取body数据:

[127.0.0.1] [2021-08-20 09:37:08 +0300]
Parameters: {"n    "746227ea-5232-11e1-8704-00155d01cd01",n    "d72144ec-8b03-11e1-8b38-00155d01cd01"n"=>nil, "url_param"=>"9948f4a4-47c2-11e1-b0a6-00155d01cd01"}

和body为空,如果我尝试:JSON.parse (request.body.read)我:

809: unexpected token at ''

如何正确地发送身体?

关闭!

Faraday默认发送报头:

Content-Type: "application/x-www-form-urlencoded"

我改成:

Content-Type: "application/json"

它成功了。

最新更新