【发布时间】:2014-10-10 17:09:50
【问题描述】:
我正在编写一个 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 对象(下面的屏幕截图)。
我需要单独为这个调用重新配置一个新的 Faraday 实例吗?这似乎有点多余,但它显然在 FaradayMiddleware::ParseJson 类上爆炸了。
我的 RSpec 测试返回:
Failure/Error: latest = client.max_item
Faraday::ParsingError:
757: unexpected token at '8438316'
感谢任何帮助。
【问题讨论】: