ruby – 法拉第JSON帖子’undefined method bytesize’for body

我正在尝试将一些代码从HTTParty转换为法拉第.以前我用过:

HTTParty.post("http://localhost/widgets.json", body: { name: "Widget" })

新片段是:

faraday = Faraday.new(url: "http://localhost") do |config|
  config.adapter Faraday.default_adapter

  config.request :json
  config.response :json
end
faraday.post("/widgets.json", { name: "Widget" })

其结果是:NoMethodError:{}的未定义方法’bytesize’:哈希.是否有可能让法拉第自动将我的请求主体序列化为字符串?

最佳答案 中间件列表要求以特定顺序构造/堆叠,否则您将遇到此错误.第一个中间件被认为是最外层的,它包装了所有其他中间件,因此适配器应该是最里面的(或最后一个):

Faraday.new(url: "http://localhost") do |config|
  config.request :json
  config.response :json
  config.adapter Faraday.default_adapter
end

有关其他信息,请参阅Advanced middleware usage.

点赞