【问题标题】:How do I make a uber-simple API wrapper in Ruby?如何在 Ruby 中制作超级简单的 API 包装器?
【发布时间】:2010-11-10 21:18:53
【问题描述】:

我正在尝试使用来自 is.gd 的超级简单的API

http://is.gd/api.php?longurl=http://www.example.com

如果 URL 按预期缩短,则返回响应标头“HTTP/1.1 200 OK”,如果出现任何问题,则返回“HTTP/1.1 500 Internal Server Error”。假设请求成功,响应正文将仅包含新的缩短 URL

我什至不知道从哪里开始,或者是否有任何可用的 ruby​​ 方法可以使这些 API 请求的发送和接收变得顺畅。我基本上想将响应(缩短的 url)分配给 ruby​​ 对象。

你会怎么做?提前致谢。

【问题讨论】:

    标签: ruby api


    【解决方案1】:

    超级简单:

    require 'open-uri'
    
    def shorten(url)
      open("http://is.gd/api.php?longurl=#{url}").read
    rescue
      nil
    end
    

    open-uri 是 Ruby 标准库的一部分,并且(除其他外)使使用 open 方法(通常打开文件)执行 HTTP 请求成为可能。 open 返回一个 IO,在 IO 上调用 read 返回正文。如果服务器返回 500 错误,open-uri 将抛出异常,在这种情况下,我正在捕获异常并返回 nil,但如果您愿意,可以让异常冒泡到调用者,或引发另一个异常.

    哦,你会这样使用它:

    url = "http://www.example.com"
    puts "The short version of #{url} is #{shorten(url)}"
    

    【讨论】:

      【解决方案2】:

      我知道你已经得到了你接受的答案,但我仍然想提一下httparty,因为我在用它包装 API(Delicious 和 Github)方面取得了非常好的经验。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-26
        • 2014-11-14
        • 1970-01-01
        • 1970-01-01
        • 2019-08-03
        • 1970-01-01
        • 1970-01-01
        • 2019-04-13
        相关资源
        最近更新 更多