Scala 在Play Framework路由中不捕获通配符
我通过Play公开了一个httpapi,为了管理破坏兼容性的更改,URL包含了版本号。目前情况如下:Scala 在Play Framework路由中不捕获通配符,scala,playframework-2.0,Scala,Playframework 2.0,我通过Play公开了一个httpapi,为了管理破坏兼容性的更改,URL包含了版本号。目前情况如下: GET /api/v1/someMethod com.foo.Api.someMethod() 当我对其中一个方法的输出进行更改时,我希望支持v2。但是,对于大多数方法,行为是相同的,所以我不在乎使用哪个版本。我试图将上述行修改为: GET /api/v:version/someMethod com.foo.Api.someMethod() 但Play无法编译
GET /api/v1/someMethod com.foo.Api.someMethod()
当我对其中一个方法的输出进行更改时,我希望支持v2。但是,对于大多数方法,行为是相同的,所以我不在乎使用哪个版本。我试图将上述行修改为:
GET /api/v:version/someMethod com.foo.Api.someMethod()
但Play无法编译此代码,错误是调用定义:version中缺少参数
我知道我在调用中没有使用版本参数-因为我不需要!有没有一个合理的方法来实现我在这里所追求的目标,或者让Play跳过这个检查,或者在路由中放置一个未捕获为参数的通配符
(我想如果没有,我可以将参数添加到方法定义中,然后忽略它。但如果可能的话,我宁愿避免这样做。)在尝试寻找解决方法的过程中,我怀疑这可能是不可能的 最大的症结在于反向布线。Play希望我能够在模板中使用
@routes.com.foo.Api.someMethod
,并将其解析为调用该方法的URL。(事实上,我是在API文档中这样做的)。如果我的上述建议被接受,那么与该方法对应的实际URL是什么将是任意的
我想我真正想要的是这个方法有一个规范的URL,但是其他类似的模式也被认为是匹配的。我承认Play并没有将此作为相对简单的routes文件语法的一部分提供,我必须自己完成(例如,使用两种模式,通配符模式最终但不直接调用相同的方法)