我是一个 ruby 新手,现在已经尝试 Sinatra 一段时间了,我无法弄清楚的一件事是为什么 url 中的“/”会产生如此大的差异。 我的意思是不是:
get 'some_url' do
end
和
get 'some_url/' do
end
应该指向同一条路线?为什么 Sinatra 认为它是不同的路线?我花了整整一个小时试图弄明白这一点。
最佳答案
根据 RFC 2616 和 RFC 2396(定义资源标识的 RFC),这些 URL 不定义相同的资源。因此 Sinatra 以不同的方式对待它们。这是特别的。如果您想象路由返回带有相关链接的页面,则很重要。这个链接
<a href="bar">click me</a>
会指向/bar
如果你来自 /foo
, 至 /foo/bar
如果你来自 /foo/
.
您可以使用以下语法来定义匹配两者的路由:
get '/foo/?' do
# ...
end
或者上面评论中提到的正则表达式版本。
关于ruby - Sinatra Url '/' 解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7645289/