Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在Play Framework路由中不捕获通配符_Scala_Playframework 2.0 - Fatal编程技术网

Scala 在Play Framework路由中不捕获通配符

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无法编译

我通过Play公开了一个httpapi,为了管理破坏兼容性的更改,URL包含了版本号。目前情况如下:

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文件语法的一部分提供,我必须自己完成(例如,使用两种模式,通配符模式最终但不直接调用相同的方法)