我试图使用ActiveResource从第三方API中消耗xml数据.我可以使用RESTClient应用程序来成功验证和发出请求.我编码我的应用程序,当我提出请求时,我收到404错误.我补充说:
ActiveResource::Base.logger = Logger.new(STDERR)
到我的development.rb文件,弄清楚了问题. API会以xml数据的形式响应不能以xml结尾的请求. EG,这在RESTClient中有效:
https://api.example.com/contacts
但ActiveResource正在发送此请求
https://api.example.com/contacts.xml
有没有“漂亮”的方式从ActiveResource生成的请求中剥离扩展?
谢谢
解决方法
您可能需要覆盖模型中的
element_path方法.
根据API,目前的定义如下:
def element_path(id,prefix_options = {},query_options = nil) prefix_options,query_options = split_options(prefix_options) if query_options.nil? "#{prefix(prefix_options)}#{collection_name}/#{id}.#{format.extension}#{query_string(query_options)}" end
删除.#{format.extension}部分可能会做你所需要的.