Net :: HTTP是否有更用户友好的替代方法与REST API进行交互?

时间:2020-03-06 14:25:35  来源:igfitidea点击:

Net :: HTTP对于标准用例而言可能非常麻烦!

解决方案

这就是我使用的:http://rubyforge.org/projects/restful-rails/。

rest-open-uri是在RESTful Web服务全书中大量使用的一种。

gem install rest-open-uri

用法示例:

response = open('https://wherever/foo',
                :method => :put,
                :http_basic_authentication => ['my-user', 'my-passwd'],
                :body => 'payload')

puts response.read

如果我们只需要处理REST,rest-client库就很棒。

如果我们使用的API并不是完全RESTful的,即使它们不是HTTParty,也值得一试。它简化了REST API和非RESTful Web API的使用。签出此代码(从上面的链接复制):

require 'rubygems'
require 'httparty'

class Representative
  include HTTParty
  format :xml

  def self.find_by_zip(zip)
    get('http://whoismyrepresentative.com/whoismyrep.php', :query => {:zip => zip})
  end
end

puts Representative.find_by_zip(46544).inspect
# {"result"=>{"n"=>"1", "rep"=>{"name"=>"Joe Donnelly", "district"=>"2", "office"=>"1218 Longworth", "phone"=>"(202) 225-3915", "link"=>"http://donnelly.house.gov/", "state"=>"IN"}}}

HyperactiveResource尚处于起步阶段,但看起来还不错。

我是rest-client的忠实拥护者,它的作用足以使它有用,而不会妨碍实现。它开箱即用地智能处理异常,并支持日志记录和身份验证。

看一看asplake(即我)的github上的describe_routes和path-to项目/ gems(我似乎无法从这里链接到该路径。path-to使用HTTParty,而不是像其他一些URL一样使用硬编码的URL在这个问题的答案中,它使用了describe_routes提供的元数据,在positiveincline.com上有几篇文章描述了这些gem,其中与问题最相关的是Nested path-to / describe_routes和HTTParty。

好吧,只要我们在Rails上,就总有ActiveResource :)