问题描述
我以这种方式初始化我的法拉第客户端:
@client = Faraday.new(url: BASE_URL) do |faraday|
faraday.request :json
faraday.response :json
faraday.response :raise_error
end
当我拯救 Faraday::ClientError
时,响应的正文如下所示:
irb> e.response[:body]
"{\"error\":\"access_denied\",\"error_description\":\"Unauthorized\"}"
我希望它被解析并让主体成为一个哈希。我做错了什么?
解决方法
在 Faraday 中,the order of registration of middlewares matter 因为它是一个管道(类似于 Rack)。
因此,如果您将 :raise_error
中间件放在 :json
之前,错误的正文将被解析。
@client = Faraday.new(url: BASE_URL) do |faraday|
faraday.request :json
faraday.response :raise_error
faraday.response :json
end