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

JZ.*_*JZ. 2 ruby api

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

http://is.gd/api.php?longurl=http://www.example.com
Run Code Online (Sandbox Code Playgroud)

它返回一个响应头"HTTP/1.1 200 OK",如果URL被缩短如预期,或"HTTP/1.1 500内部服务器错误",如果有,阻止此任何问题.假设请求成功,响应正文将仅包含新的缩短URL

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

你会怎么做?提前致谢.

The*_*heo 10

超级简单:

require 'open-uri'

def shorten(url)
  open("http://is.gd/api.php?longurl=#{url}").read
rescue
  nil
end
Run Code Online (Sandbox Code Playgroud)

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

哦,你会像这样使用它:

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