Sinatra 可选参数运算符和语法。什么是正确的语法?

Sinatra optional parameter operator and syntax. What is the right syntax?

get '/foo/?bar'
  "Hi"
end

请问网址:

www.yahoo.com/foo/about/blog   
www.theatlantic.com/foo/about

走那条路? ? 运算符在这里工作吗?或者我需要两个 ? 标记吗?我正在阅读 Sinatra Up and Running,它似乎没有列出此内容。好像很重要。

您可以提供一个普通的正则表达式来匹配路由。例如,一个非常允许的 "foo" 路由接受具有 word sub-string "foo" 的每个路由:

get /foo/ do
  'From ANY path that includes the word foo!'
end

这将匹配:

  1. /foo
  2. /foobar
  3. /bar/another_foo/something_else

正确的语法是:

get '/foo/?:bar?' do
  "Hi"
end

第一个问号使前面的 / 可选,第二个问号使前面的符号 :bar 可选,因此:
/foo/about - 是的
/foo/about/blog - 没有
/foo - 是的
/foo/ - 是

否则你只能将 :bar 符号设为可选

get '/foo/:bar?' do
  "Hi"
end

这样:
/foo/about - 是的
/foo/about/blog - 没有
/foo - 没有
/foo/ - 是

再举一个例子,这个选项:

get '/go/?:bar' do 
    "wow"
end

实际上等同于:

get '/go/:bar' do 
    "wow"
end