Ich möchte Informationen von einer anderen Website übernehmen. Daher sollte ich (vielleicht) eine Anfrage an diese Website stellen (in meinem Fall eine HTTP-GET-Anfrage) und die Antwort erhalten.
Wie kann ich das in Ruby on Rails machen?
Wenn es möglich ist, ist es ein korrekter Ansatz für meine Controller?
ruby
ruby-on-rails-3
http
request
user502052
quelle
quelle
Net :: HTTP ist in Ruby integriert, aber seien wir ehrlich, oft ist es einfacher , den umständlichen Stil der 1980er Jahre nicht zu verwenden und eine Alternative auf höherer Ebene auszuprobieren:
quelle
Net::HTTP
ist umständlich, aber der Kompromiss lohnt sich nicht.OpenURI ist das Beste; es ist so einfach wie
quelle
open-uri
keine Weiterleitungen folgen.file:///etc/passwd
quelle
Ich bevorzuge httpclient gegenüber Net :: HTTP.
HTTParty ist eine gute Wahl, wenn Sie eine Klasse erstellen, die ein Client für einen Dienst ist. Es ist eine praktische Mischung, die Ihnen 90% von dem gibt, was Sie brauchen. Sehen Sie in den Beispielen, wie kurz die Google- und Twitter-Clients sind .
Und um Ihre zweite Frage zu beantworten: Nein, ich würde diese Funktionalität nicht in einen Controller integrieren - ich würde stattdessen, wenn möglich, ein Modell verwenden, um die Details zu kapseln (möglicherweise mithilfe von HTTParty) und es einfach vom Controller aus aufzurufen.
quelle
Meine beiden bevorzugten Möglichkeiten, den Inhalt von URLs abzurufen, sind entweder OpenURI oder Typhoeus .
OpenURI, weil es überall ist, und Typhoeus, weil es sehr flexibel und leistungsstark ist.
quelle
Hier ist der Code, der funktioniert, wenn Sie einen REST-API-Aufruf hinter einem Proxy ausführen:
quelle