2010-11-10 5 views
2

Je suis en train d'utiliser un super simple API de is.gd:Comment créer un wrapper d'API ultra-simple dans Ruby?

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

qui retourne un en-tête de réponse "HTTP/1.1 200 OK" si l'URL a été raccourci comme prévu, ou « HTTP/1.1 500 Erreur interne du serveur "s'il y avait un problème qui l'a empêché. En supposant que la requête a réussi, le corps de la réponse ne contiendra que la nouvelle URL raccourcie

Je ne sais même pas par où commencer ou s'il existe des méthodes ruby ​​disponibles pour rendre l'envoi et la réception de ces requêtes API sans frottement. Je veux fondamentalement assigner la réponse (l'URL raccourcie) à un objet de rubis.

Comment voulez-vous faire cela? Merci d'avance.

Répondre

10

Super simple:

require 'open-uri' 

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

open-uri fait partie de la bibliothèque standard Ruby et (entre autres) permet de faire des requêtes HTTP en utilisant la méthode open (qui ouvre généralement des fichiers). open renvoie une adresse d'ES et l'appel read sur l'E/S renvoie le corps. open-uri lèvera une exception si le serveur renvoie une erreur 500, et dans ce cas j'attrape l'exception et renvoie nil, mais si vous le souhaitez, vous pouvez laisser l'exception atteindre l'appelant ou déclencher une autre exception.

Oh, et vous l'utiliser comme ceci:

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

Je sais que vous avez déjà obtenu une réponse que vous avez accepté, mais je veux encore parler httparty parce que je l'ai fait de très bonnes expériences API d'emballage (délicieux et Github) avec elle.

Questions connexes