get '/foo/?bar'
"Hi"
end
网址:
www.yahoo.com/foo/about/blog
www.theatlantic.com/foo/about
打那条路? ?
运算符在这里工作吗?或者我需要两个?
标记?我正在阅读 Sinatra Up and Running ,但它似乎没有列出。这似乎很重要。
答案 0 :(得分:2)
正确的语法是:
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
答案 1 :(得分:1)
您可以提供普通的正则表达式来匹配路线。例如,一个非常允许的“foo”路由接受具有字 子字符串“foo”的每个路由:
get /foo/ do
'From ANY path that includes the word foo!'
end
这将匹配:
/foo
/foobar
/bar/another_foo/something_else