我正在编写一个 API Wrapper 并遇到了一个我不确定如何解决的问题。
这是法拉第设置:
@connection = Faraday.new(url: @api_url, params: params,
headers: default_headers,
ssl: { verify: true } ) do |faraday|
faraday.use FaradayMiddleware::Mashify
faraday.use FaradayMiddleware::ParseJson, content_type: /\bjson$/
faraday.use FaradayMiddleware::FollowRedirects
faraday.adapter Faraday.default_adapter
end
这适用于我正在进行的 95% 的 API 调用——它解析 JSON 就像我需要它和 Mashify 一样。伟大的。
问题是当 API 返回一个未包含在 JSON 对象中的 JSON 值时。API调用是这样的:
https://hacker-news.firebaseio.com/v0/maxitem.json
我可以看到这不是 jsonlint 中的有效 JSON 对象(下面的屏幕截图)。
我需要单独为这个调用重新配置一个新的法拉第实例吗?这似乎有些多余,但它显然在FaradayMiddleware::ParseJson
课堂上爆炸了。
我的 RSpec 测试返回这个:
Failure/Error: latest = client.max_item
Faraday::ParsingError:
757: unexpected token at '8438316'
任何帮助表示赞赏。