2013-07-18 30 views
2

如何從哈希中添加額外的參數到網址?例如:如何向url添加其他參數? - 編碼網址

parameters = Hash.new 
parameters["special"] = '25235' 
parameters["code"] = 62346234 

HTTP://127.0.0.1:8000/api/book_category/? %S參數

require 'httparty' 
require 'json' 

response = HTTParty.get("http://127.0.0.1:8000/api/book_category/?") 


json = JSON.parse(response.body) 
puts json 
+4

'parametrs [ 「特殊」] =「25235''當參數是Array類的無效。 – Torimus

+0

HTTParty支持'get'和'post'的':query'參數,這使得添加正確編碼的參數變得微不足道。請參閱https://github.com/jnunemaker/httparty/blob/master/examples/rubyurl.rb,因此不需要任何更復雜的事情。 –

回答

3

下應該給你一個有效的URI,你可以使用的JSON查詢。

require 'httparty' 

parameters = {'special' => '512351235','code' => 6126236} 
uri = URI.parse('http://127.0.0.1:8000/api/book_category/').tap do |uri| 
    uri.query = URI.encode_www_form parameters 
end 

uri.to_s 
#=> "http://127.0.0.1:8000/api/book_category/?special=512351235&code=6126236" 

對你的問題的錫芒評論可能是更好的答案:

require 'httparty' 

parameters = {'special' => '512351235','code' => 6126236} 
response = HTTParty.get('http://127.0.0.1:8000/api/book_category/', :query => parameters) 

json = JSON.parse(response.body) 
puts json 
+1

如果您使用的是「URI.encode_www_form」,則完全使用URI。解析URL然後使用'query ='方法。 –

3

Addressable::URI類是一個很好的替代標準庫的URI模塊,並提供了公正這樣的URI字符串操作,而無需手動構建和轉義查詢字符串。

此代碼演示

require 'addressable/uri' 
include Addressable 

uri = URI.parse('http://127.0.0.1:8000/api/book_category/') 

parametrs = {} 
parametrs["special"] = '25235' 
parametrs["code"] = 62346234 

uri.query_values = parametrs 

puts uri 

輸出

http://127.0.0.1:8000/api/book_category/?code=62346234&special=25235 
+0

Addressable :: URI爲+1。這是一個很棒的工具。 –