Как мне сделать очень простую оболочку API в Ruby? - PullRequest
2 голосов
/ 10 ноября 2010

Я пытаюсь использовать супер простой API от is.gd:

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

Возвращает заголовок ответа «HTTP / 1.1 200 OK», если URL-адрес был сокращен должным образом, или «HTTP / 1.1 500 Internal Server Error», если возникла проблема, которая помешала этому. Предполагая, что запрос был успешным, тело ответа будет содержать только новый сокращенный URL-адрес

Я даже не знаю, с чего начать или существуют ли какие-либо рубиновые методы, чтобы сделать отправку и получение этих запросов API беспроблемными. Я в основном хочу назначить ответ (сокращенный URL) для объекта ruby.

Как бы вы это сделали? Заранее спасибо.

Ответы [ 2 ]

10 голосов
/ 10 ноября 2010

Супер просто:

require 'open-uri'

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

open-uri является частью стандартной библиотеки Ruby и (среди прочего) позволяет выполнять HTTP-запросы с использованием метода open (который обычно открывает файлы). open возвращает IO, а вызов read для IO возвращает тело. open-uri сгенерирует исключение, если сервер вернет ошибку 500, и в этом случае я перехватываю исключение и возвращаю nil, но если вы хотите, вы можете позволить исключению всплыть перед вызывающей стороной или вызвать другое исключение .

О, и вы бы использовали это так:

url = "http://www.example.com"
puts "The short version of #{url} is #{shorten(url)}"
2 голосов
/ 10 ноября 2010

Я знаю, что вы уже получили ответ, который вы приняли, но я все еще хочу упомянуть httparty , потому что я очень хорошо справился с обёртыванием API (Delicious и Github).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...