【发布时间】:2014-03-17 19:30:43
【问题描述】:
我需要 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
有效,但看起来很傻。
【问题讨论】:
-
@UriAgassi 和 grepping
regex一样,我直接找更清晰的答案。 -
我认为
get "/comments/:start/?" do |start=0|可以为您解决问题...