Parametrized get request in Ruby?

Tom Lehman picture Tom Lehman · Aug 9, 2009 · Viewed 52.4k times · Source

How do I make an HTTP GET request with parameters in Ruby?

It's easy to do when you're POSTing:

  require 'net/http'
  require 'uri'

  HTTP.post_form URI.parse('http://www.example.com/search.cgi'),
                 { "q" => "ruby", "max" => "50" }

But I see no way of passing GET parameters as a hash using 'net/http'.

Answer

lime picture lime · Apr 3, 2012

Since version 1.9.2 (I think) you can actually pass the parameters as a hash to the URI::encode_www_form method like this:

require 'uri'

uri = URI.parse('http://www.example.com/search.cgi')
params = { :q => "ruby", :max => "50" }

# Add params to URI
uri.query = URI.encode_www_form( params )

and then fetch the result, depending on your preference

require 'open-uri'

puts uri.open.read

or

require 'net/http'

puts Net::HTTP.get(uri)