Eu gostaria de receber informações de outro site. Portanto (talvez) eu deveria fazer uma solicitação para esse site (no meu caso, uma solicitação HTTP GET) e receber a resposta.
Como posso fazer isso no Ruby on Rails?
Se for possível, é uma abordagem correta para usar nos meus controladores?
ruby
ruby-on-rails-3
http
request
user502052
fonte
fonte
O Net :: HTTP está embutido no Ruby, mas, convenhamos, muitas vezes é mais fácil não usar seu estilo pesado da década de 1980 e tentar uma alternativa de nível superior:
fonte
Net::HTTP
é complicado, mas a troca não vale a pena.OpenURI é o melhor; é tão simples quanto
fonte
open-uri
isso não seguirá redirecionamentos.file:///etc/passwd
fonte
Eu prefiro httpclient sobre Net :: HTTP.
HTTParty é uma boa opção se você estiver criando uma classe que é cliente para um serviço. É uma combinação conveniente que oferece 90% do que você precisa. Veja como os clientes do Google e Twitter são curtos nos exemplos .
E para responder à sua segunda pergunta: não, eu não colocaria essa funcionalidade em um controlador - eu usaria um modelo, se possível, para encapsular os detalhes (talvez usando HTTParty) e simplesmente chamá-lo do controlador.
fonte
Minhas duas maneiras favoritas de capturar o conteúdo de URLs são OpenURI ou Typhoeus .
OpenURI porque está em todo lugar, e Typhoeus porque é muito flexível e poderoso.
fonte
Aqui está o código que funciona se você estiver fazendo uma chamada API REST atrás de um proxy:
fonte