Chciałbym pobrać informacje z innej strony internetowej. Dlatego (być może) powinienem wysłać żądanie do tej witryny (w moim przypadku żądanie HTTP GET) i otrzymać odpowiedź.
Jak mogę to zrobić w Ruby on Rails?
Jeśli to możliwe, czy jest to poprawne podejście w moich kontrolerach?
ruby
ruby-on-rails-3
http
request
użytkownik502052
źródło
źródło
Net :: HTTP jest wbudowany w Ruby, ale spójrzmy prawdzie w oczy, często łatwiej jest nie używać nieporęcznego stylu lat 80. i wypróbować alternatywę wyższego poziomu:
źródło
Net::HTTP
jest kłopotliwe, ale nie warto.OpenURI jest najlepszy; to jest tak proste jak
źródło
open-uri
nie nastąpi przekierowanie.file:///etc/passwd
źródło
Wolę httpclient niż Net :: HTTP.
HTTParty to dobry wybór, jeśli tworzysz klasę, która jest klientem usługi. Jest to wygodny mixin, który daje 90% tego, czego potrzebujesz. Zobacz, jak krótcy są klienci Google i Twitter w przykładach .
I aby odpowiedzieć na twoje drugie pytanie: nie, nie umieściłbym tej funkcji w kontrolerze - zamiast tego użyłbym modelu, jeśli to możliwe, do enkapsulacji szczegółów (być może za pomocą HTTParty) i po prostu wywołałem go z kontrolera.
źródło
Moje ulubione dwa sposoby pobierania zawartości adresów URL to OpenURI lub Typhoeus .
OpenURI, ponieważ jest wszędzie, a Typhoeus, ponieważ jest bardzo elastyczny i potężny.
źródło
Oto kod, który działa, jeśli wykonujesz wywołanie interfejsu API REST za serwerem proxy:
źródło