Scala 忽略路由中的参数
Play的一个优点是它不会规定你的URL格式。这很好,因为我正在移植一个应用程序,需要保持与旧URL的向后兼容性 我想匹配所有以Scala 忽略路由中的参数,scala,routing,playframework-2.1,Scala,Routing,Playframework 2.1,Play的一个优点是它不会规定你的URL格式。这很好,因为我正在移植一个应用程序,需要保持与旧URL的向后兼容性 我想匹配所有以/foo/bar开头的URL: /foo/bar /foo/bar/0 /foo/bar/1 /foo/bar/baz 我该怎么做 我找不到太多的文档。我找到了这方面的老医生 通过在尾部斜杠后添加问号,可以告诉Play您希望匹配这两个URL。例如: GET/clients/?客户。索引 URI模式不能有任何可选部分,但尾部斜杠除外 作为它自己的特例,这有点可笑。IDK
/foo/bar
开头的URL:
/foo/bar
/foo/bar/0
/foo/bar/1
/foo/bar/baz
我该怎么做
我找不到太多的文档。我找到了这方面的老医生
通过在尾部斜杠后添加问号,可以告诉Play您希望匹配这两个URL。例如:
GET/clients/?客户。索引
URI模式不能有任何可选部分,但尾部斜杠除外
作为它自己的特例,这有点可笑。IDK多少仍然是正确的,因为它不在当前文档中
我试过了
GET /foo/bar Foo.bar
GET /foo/bar/*unused Foo.bar
及
及
GET/foo/bar foo.bar
GET/foo/bar/$unused foo.bar(unused)
但它仍然不起作用
冲突符号均源自文件“/home/paul/my play project/target/scala-2.10/src_managed/main/routes_reverseRouting.scala”
如何匹配URL前缀或忽略参数?解决方案要归功于@wingedsubmariner
GET /foo/bar Foo.bar
GET /foo/bar/$unused<.*> Foo.barIgnoreUnused(unused)
令人惊讶的是,这似乎不起作用
GET /foo/bar$unused<.*> Foo.bar(unused)
GET/foo/bar$unused foo.bar(unused)
Play的正确做法可能是允许使用未使用的参数,但这个(公认的丑陋)解决方案是有效的。我认为您的思路是正确的,但需要定义两个单独的方法来替换
Foo.bar
,一个取用未使用的参数,另一个不取用。
GET /foo/bar Foo.bar
GET /foo/bar/$unused<.*> Foo.bar(unused)
GET /foo/bar Foo.bar
GET /foo/bar/$unused<.*> Foo.barIgnoreUnused(unused)
object Foo {
def bar = Ok("")
def barIgnoreUnused(unused: String) = bar
}
GET /foo/bar$unused<.*> Foo.bar(unused)