我需要Sinatra路由按照以下方式运行:
GET /list/20/10 # Get 20 items with offset 10
GET /list/20 # Get 20 items with default offset
GET /list # Get default number of items with default offset
我明白了,我可以将这些值作为查询传递:
GET /list?limit=20&offset=10
但我希望按照上述描述来传递它们。我非常确定有一种方法可以向Sinatra/Padrino解释我的意图,但我目前完全被卡住了。我已经尝试过:
get :list, :map => '/list', :with => [:limit, :offset] {} # 404 on /list
get :list, :map => '/list/*' { puts params[:splat] } # 404 on /list
get :list, :map => '/list/?:limit?/?:offset?' {} # 404 on /list
get :list, :map => '/list' { redirect url_for(:list, …) } # 302, not convenient for consumers
我应该如何提醒Sinatra参数可能是可选的?
无意中,
get %r{/list(/[^/]+)*} do
# parse params[:captures]
end
工作了,但看起来很傻。
regex
进行 grep 相同,我正在寻找更清晰、更直接的方式。 - Aleksei Matiushkinget "/comments/:start/?" do |start=0|
可以解决你的问题... - Uri Agassi