路线模式中的优先级

时间:2013-07-31 08:28:51

标签: ruby url-routing rack thin

我正在运行thin服务器(没有任何Web应用程序框架)。在路由模式中,匹配模式的顺序似乎没有区别。我是否这样做:

Rack::Handler::Thin.run(Rack::Builder.new do
  map("/"){...}
  map("/foo/"){...}
end, Port: 3000)

Rack::Handler::Thin.run(Rack::Builder.new do
  map("/foo/"){...}
  map("/"){...}
end, Port: 3000)

localhost:3000/foo/的请求将由map("/foo/"){...}而不是map("/"){...}正确选取。这个优先级如何确定?

对于某些Web应用程序框架,例如在Sinatra中,它显示Routes are matched in the order they are defined. The first route that matches the request is invoked,而我的应用程序设置不是这种情况。

1 个答案:

答案 0 :(得分:1)

https://github.com/rack/rack/blob/master/lib/rack/urlmap.rb

在Rack :: URLMap中未确定优先级。它与您提供的资源的完整路径匹配

map(){ ... }