3

如何从哈希向 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

2 回答 2

4

以下内容应为您提供可用于 json 查询的有效 URI。

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"

Tin Mans 对您的问题的评论可能是更好的答案:

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
于 2013-07-18T14:51:29.070 回答
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
于 2013-07-18T15:13:40.057 回答