Je voudrais prendre des informations d'un autre site Web. Par conséquent (peut-être) je devrais faire une demande à ce site Web (dans mon cas, une demande HTTP GET) et recevoir la réponse.
Comment puis-je faire cela dans Ruby on Rails?
Si c'est possible, est-ce une approche correcte à utiliser dans mes contrôleurs?
ruby
ruby-on-rails-3
http
request
user502052
la source
la source
Net :: HTTP est intégré à Ruby, mais avouons-le, il est souvent plus facile de ne pas utiliser son style encombrant des années 1980 et d'essayer une alternative de niveau supérieur:
la source
Net::HTTP
est lourde mais le compromis n'en vaut pas la peine.OpenURI est le meilleur; c'est aussi simple que
la source
open-uri
ne suivra pas les redirections.file:///etc/passwd
la source
Je préfère httpclient à Net :: HTTP.
HTTParty est un bon choix si vous créez une classe qui est un client pour un service. C'est un mixin pratique qui vous donne 90% de ce dont vous avez besoin. Voyez à quel point les clients Google et Twitter sont courts dans les exemples .
Et pour répondre à votre deuxième question: non, je ne mettrais pas cette fonctionnalité dans un contrôleur - j'utiliserais plutôt un modèle si possible pour encapsuler les détails (peut-être en utilisant HTTParty) et simplement l'appeler à partir du contrôleur.
la source
Mes deux façons préférées de saisir le contenu des URL sont OpenURI ou Typhoeus .
OpenURI parce qu'il est partout et Typhoeus parce qu'il est très flexible et puissant.
la source
Voici le code qui fonctionne si vous effectuez un appel API REST derrière un proxy:
la source