【发布时间】:2016-01-21 07:07:49
【问题描述】:
是否可以在葡萄路由中提供可选的URL参数。
即。 对于像这样的端点:
get '/user/:name/:location/:id' do
end
有没有办法在 URL 中使用或不使用“位置”参数来访问此端点。
我尝试用括号为可选参数定义端点,如下所示:
get '/user/:name/(:location)/:id' do
end
但这没有用
【问题讨论】:
是否可以在葡萄路由中提供可选的URL参数。
即。 对于像这样的端点:
get '/user/:name/:location/:id' do
end
有没有办法在 URL 中使用或不使用“位置”参数来访问此端点。
我尝试用括号为可选参数定义端点,如下所示:
get '/user/:name/(:location)/:id' do
end
但这没有用
【问题讨论】:
我建议您使用location 作为查询参数。这样您就可以将其设为可选并仅保留 1 条路线。
params do
optional :location, type: String
end
get '/user/:name/:id' do
if params[:location].present?
# some code
else
# some code
end
end
这条路线将由/user/:name/:id?location={something} 匹配一个位置,/user/:name/:id 不匹配。
【讨论】: