我正在写一个客户端消耗非REST API(即GET site.com/gettreasurehunts),这就要求我指定在请求的HTTP的所有参数(甚至是资源ID)为自定义XML文档。 我想使用Rails和的ActiveResource,但我不得不几乎所有的ActiveResource的方法重写。
难道还有其他的,达到相同的结果,即使使用其他(Ruby)的框架更精致的方式?
我正在写一个客户端消耗非REST API(即GET site.com/gettreasurehunts),这就要求我指定在请求的HTTP的所有参数(甚至是资源ID)为自定义XML文档。 我想使用Rails和的ActiveResource,但我不得不几乎所有的ActiveResource的方法重写。
难道还有其他的,达到相同的结果,即使使用其他(Ruby)的框架更精致的方式?
我不认为有一种方法用的ActiveResource做到这一点,对于这些情况我刚刚使用Net :: HTTP和引入nokogiri
我会建议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服务。
答案很简单,没有。 我曾与的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'
)