消费Rails中与的ActiveResource非的REST API(Consuming non-R

2019-07-29 11:35发布

我正在写一个客户端消耗非REST API(即GET site.com/gettreasurehunts),这就要求我指定在请求的HTTP的所有参数(甚至是资源ID)为自定义XML文档。 我想使用Rails和的ActiveResource,但我不得不几乎所有的ActiveResource的方法重写。

难道还有其他的,达到相同的结果,即使使用其他(Ruby)的框架更精致的方式?

Answer 1:

我不认为有一种方法用的ActiveResource做到这一点,对于这些情况我刚刚使用Net :: HTTP和引入nokogiri



Answer 2:

我会建议HTTParty ,这是非常灵活的,我相信能处理你所需要的。

从该项目的一些例子:

pp HTTParty.get('http://whoismyrepresentative.com/whoismyrep.php?zip=46544')
pp HTTParty.get('http://whoismyrepresentative.com/whoismyrep.php', :query => {:zip => 46544})

@auth = {:username => u, :password => p}
options = { :query => {:status => text}, :basic_auth => @auth }
HTTParty.post('http://www.twitter.com/statuses/update.json', options)

如果你需要在请求的主体才能发布内容,只需添加:体=>“文本”的选项哈希值。

这是非常简单的继续努力,我目前使用到位的ActiveResource的消费从一个Rails应用程序的一些REST服务。



Answer 3:

答案很简单,没有。 我曾与的ActiveResource类似的问题,不喜欢HTTParty的API(太多类的方法),所以我推出我自己的。 试试吧,这就是所谓的扭 。 它有卷曲,并通过REXML,的libxml,引入nokogiri和JDOM开箱部分支持deserialisation。 你可以平凡编写自己的解串器了。

下面是美味的API的例子:

class Delicious
  def initialize(options)
    @uri = "https://api.del.icio.us/v1/posts".to_uri(options)
  end

  def bookmarks(parameters = {})
    @uri['/get'].get(parameters)
  end

  def recent(parameters = {})
    @uri['/recent'].get(parameters)
  end

  def bookmark(parameters)
    @uri['/add'].post_form(parameters)
  end

  def delete(parameters)
    @uri['/delete'].delete(parameters)
  end
end

account = Delicious.new :username => 'kaiwren', :password => 'fupupp1es'
account.bookmark(
    :url => 'http://blog.sidu.in/search/label/ruby',
    :description => 'The Ruby related posts on my blog!',
    :extended => "All posts tagged with 'ruby'",
    :tags => 'ruby hacking'
  )


文章来源: Consuming non-REST APIs in Rails with ActiveResource