Scala 忽略路由中的参数

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

Play的一个优点是它不会规定你的URL格式。这很好,因为我正在移植一个应用程序,需要保持与旧URL的向后兼容性

我想匹配所有以
/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)