Saya ingin mengambil informasi dari situs web lain. Karena itu (mungkin) saya harus membuat permintaan ke situs web itu (dalam kasus saya permintaan GET HTTP) dan menerima tanggapan.
Bagaimana saya bisa membuatnya di Ruby on Rails?
Jika memungkinkan, apakah ini pendekatan yang benar untuk digunakan dalam pengontrol saya?
ruby
ruby-on-rails-3
http
request
pengguna502052
sumber
sumber
Net :: HTTP dibangun ke dalam Ruby, tetapi mari kita hadapi itu, seringkali lebih mudah untuk tidak menggunakan gaya 1980-an yang rumit dan mencoba alternatif tingkat yang lebih tinggi:
sumber
Net::HTTP
itu rumit tapi trade off tidak sepadan.OpenURI adalah yang terbaik; sesederhana itu
sumber
open-uri
tidak akan mengikuti arahan ulang.file:///etc/passwd
sumber
Saya lebih suka httpclient daripada Net :: HTTP.
HTTParty adalah pilihan yang baik jika Anda membuat kelas yang merupakan klien untuk suatu layanan. Ini adalah mixin yang nyaman yang memberi Anda 90% dari yang Anda butuhkan. Lihat seberapa pendek klien Google dan Twitter dalam contoh .
Dan untuk menjawab pertanyaan kedua Anda: tidak, saya tidak akan menempatkan fungsi ini di controller - Saya akan menggunakan model jika mungkin untuk merangkum rincian (mungkin menggunakan HTTParty) dan cukup memanggilnya dari controller.
sumber
Dua cara favorit saya untuk mengambil konten URL adalah OpenURI atau Typhoeus .
OpenURI karena ada di mana-mana, dan Typhoeus karena sangat fleksibel dan kuat.
sumber
Berikut adalah kode yang berfungsi jika Anda membuat panggilan api REST di belakang proxy:
sumber