我正在Section 3.2 SiteMap
of Simply Lift浏览Lift的基础知识,有一件事让我感到震惊。
使用默认的SiteMap
代码,您可以用三种方式询问info
视图:
GET /info
,GET /info.html
,GET /info.xml
(为什么?)。此外,您可以通过四种不同的方式请求index
观看次数:
GET /
,GET /index
,GET /index.html
,GET /index.xml
。如何将此行为限制为GET /
目录和GET /info
文件?
P.S。所有这些都会返回200 OK
:
一个资源不应只有一个网址吗?
答案 0 :(得分:3)
实际上有四种方法可以解析。可以找到已知后缀的完整列表(其中任何一个都可用于访问该页面)here。
我认为原因是可以使用lift来为任何资源提供服务,因此大多数都是默认显式添加的。
我认为您可以通过将此添加到Boot.scala
LiftRules.explicitlyParsedSuffixes = Nil
但是,我不建议这样做,因为可能会有一些副作用。
将Req
与RestHelper
一起使用,您可以明确指定后缀,但我不知道是否有这样的构造可以使用Sitemap
。
答案 1 :(得分:2)
实际上,确定Lift是否应处理请求的代码是here。您可以在上面的liftHandled
方法中看到默认扩展名,但可以使用LiftRules.liftRequest
覆盖这些扩展名。类似的东西:
LiftRules.liftRequest append {
case r => Full(r.path.suffix.trim == "")
}
应该做的伎俩。
至于为什么它以这种方式工作,Jason是正确的,Lift旨在处理多种类型的动态资源。