刚开始使用Rails,我想使用具有以下端点的Web服务(使用ActiveResource):
GET / user?some_header = XYZ
这是我的ActiveResource类:
class User < ActiveResource::Base
self.site = "url"
set_collection_name 'user' #avoid pluralization within the url
end
现在如何调用上述端点?
我试过
User.get('', headers={:some_header => "XYZ"})
但是我得到了404(当我手动开火时,请求有效)。
答案 0 :(得分:1)
尝试
User.all(:params=>{:some_header => "XYZ"})
如果要避免路径中的格式化,可以使用基本的collection_path方法
def collection_path(prefix_options = {}, query_options = nil)
prefix_options, query_options = split_options(prefix_options) if query_options.nil?
"#{prefix(prefix_options)}#{collection_name}.#{format.extension}#{query_string(query_options)}"
end
到
def collection_path(prefix_options = {}, query_options = nil)
prefix_options, query_options = split_options(prefix_options) if query_options.nil?
"#{prefix(prefix_options)}#{collection_name}#{query_string(query_options)}"
end
答案 1 :(得分:1)
发现问题。虽然我在get方法中指定了一个空路径,但Rails内部附加了“.json”,因此构造的URL是
/user/.json?some_header=XYZ“
我修复它的方式是
User.collection_name = ""
User.get('user', headers={:some_header => "XYZ"})
任何人都知道更清洁的解决方案吗?