我正在尝试使用is.gd:
中的超级简单APIhttp://is.gd/api.php?longurl=http://www.example.com
如果URL按预期缩短,则返回响应标头“HTTP / 1.1 200 OK”,如果出现任何阻止此问题的“HTTP / 1.1 500内部服务器错误”,则返回响应标头。假设请求成功,响应正文将仅包含新的缩短URL
我甚至不知道从哪里开始,或者是否有任何可用的ruby方法来发送和接收这些API请求无摩擦。我基本上想要将响应(缩短的url)分配给ruby对象。
你会怎么做?提前谢谢。
答案 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)做了非常好的经验。