播放框架:动态路由取决于版本号

时间:2013-08-29 07:23:01

标签: dynamic playframework routes playframework-2.0

我正在尝试动态定义URI路由中的版本。

我的不懈想法是

A) 我在application.conf中配置了一行说明我当前的版本:

myApp.ver = 0.1

我不想在路由文件中将其用作URI的一部分,例如:

GET /myApp/{version}/welcome controller.myApp.Welcome()

我们的想法是不将版本号传递给Welcome()方法 但要从application.conf文件中获取版本。

我已经在路径文件中搜索定义参数,但没有找到帮助我的信息。

b)另一个想法是在路线中有一个变量,如:

CurrentVersion = 0.1
路径文件中的

并在URI中使用它。

我该如何解决这个问题?我没有为此找到一个例子。

感谢。

2 个答案:

答案 0 :(得分:1)

如果您想为每条路线执行此操作,则应该可以将application.baseUrl设置为包含您的版本号。为方便起见,您可以在application.conf而不是Build.scala文件as described here中定义版本。

myApp.name = myApp
myApp.ver = 0.1
application.baseUrl = ${myApp.name}/${myApp.ver}

如果你只想为某些路线做这件事,似乎没有一个简单的解决方案。如果你可以忽略路由中的参数,我会说使用regexp参数并在你的全局路由器中验证它 - 不幸的是这个doesn't seem possible没有将参数传递给控制器​​。

所以我看到另外两个选择:

  1. 对路线文件中的版本号进行硬编码,并在每次更改时进行搜索和替换。
  2. 为sbt构建过程创建一个插件,让它替换路由文件中的版本。

答案 1 :(得分:0)

在Play 1.2.x中,在conf/routes文件中,添加如下路线:

GET   /myApp/${play.configuration.getProperty("myApp.ver")}/welcome     myApp.Welcome()