如何在Ruby中创建一个超级简单的API包装器?

时间:2010-11-10 06:06:16

标签: ruby api

我正在尝试使用is.gd:

中的超级简单API
http://is.gd/api.php?longurl=http://www.example.com

如果URL按预期缩短,则返回响应标头“HTTP / 1.1 200 OK”,如果出现任何阻止此问题的“HTTP / 1.1 500内部服务器错误”,则返回响应标头。假设请求成功,响应正文将仅包含新的缩短URL

我甚至不知道从哪里开始,或者是否有任何可用的ruby方法来发送和接收这些API请求无摩擦。我基本上想要将响应(缩短的url)分配给ruby对象。

你会怎么做?提前谢谢。

2 个答案:

答案 0 :(得分:10)

超级简单:

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

答案 1 :(得分:2)

我知道你已经得到了一个你接受的答案,但我还是想提一下httparty,因为我已经用它包装API(Delicious和Github)做了非常好的经验。