Ruby / Rails - 使用ActiveResource消费webservice

时间:2012-02-14 10:52:38

标签: ruby-on-rails web-services rest activerecord activeresource

刚开始使用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(当我手动开火时,请求有效)。

2 个答案:

答案 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"})

任何人都知道更清洁的解决方案吗?