有下一个问题:
我得到一些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"
它成功了。