使用以下Sinatra应用程序
get '/app' do
content_type :json
{"params" => params}.to_json
end
Run Code Online (Sandbox Code Playgroud)
调用:
/app?param1=one¶m2=two¶m2=alt
给出以下结果:
{"params":{"param1":"one","param2":"alt"}}
Params只有两个键,param1和param2.
我理解Sinatra将params设置为哈希值,但它并不代表所有的URL请求.
在Sinatra中有没有办法获取请求中发送的所有URL参数的列表?
小智 22
机架中的任何请求
get '/app' do
params = request.env['rack.request.query_hash']
end
Run Code Online (Sandbox Code Playgroud)
now*_*owk 18
我相信默认情况下,同名的参数将被最后处理的参数覆盖.
您可以将params2设置为排序数组
...¶m2[]=two¶m2[]=alt
Run Code Online (Sandbox Code Playgroud)
或者解析查询字符串与Sinatra提供的params hash.
Lys*_*gel 10
kwon建议解析查询字符串.您可以使用CGI解析它,如下所示:
require 'cgi'
get '/app' do
content_type :json
{"params" => CGI::parse(request.query_string)}.to_json
end
Run Code Online (Sandbox Code Playgroud)
调用:
/app?param1=one¶m2=two¶m2=alt
给出以下结果:
{"params":{"param1":["one"],"param2":["two","alt"]}}