【问题标题】:RoR. Gem Faraday. How resend post query with body罗尔。宝石法拉第。如何重新发送带有正文的帖子查询
【发布时间】:2021-08-20 07:02:06
【问题描述】:

有下一个问题:

我收到一些带有正文的帖子查询(在 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 http://api2.com/products 上获取正文,我会在参数中获取正文数据:

[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"}

如果我尝试,正文是空的: JSON.parse(request.body.read) 我明白了:

809: unexpected token at ''

如何正确地憎恨身体?

【问题讨论】:

    标签: ruby-on-rails faraday


    【解决方案1】:

    关闭...

    Faraday 默认发送标头: 内容类型:“application/x-www-form-urlencoded”

    我改为: 内容类型:“应用程序/json”

    而且它有效...

    【讨论】:

      猜你喜欢
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      相关资源
      最近更新 更多