1

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

我的直接想法是

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

myApp.ver = 0.1

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

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

这个想法不是将版本号传递给 Welcome() 方法,而是从 application.conf 文件中获取版本。

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

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

CurrentVersion = 0.1

在路由文件中并在 URI 中使用它。

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

谢谢。

4

2 回答 2

2

如果您想对每条路由都执行此操作,则应该可以将 设置application.baseUrl为包含您的版本号。为了方便地做到这一点,您可以在您的application.conf而不是Build.scala文件中定义版本,如此处所述

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

如果您只想对某些路线这样做,似乎没有一个简单的解决方案。如果您可以忽略路由中的参数,我会说使用正则表达式参数并在您的全局路由器中验证它 - 不幸的是,如果不将参数传递给控制器​​,这似乎是不可能的。

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

  1. 硬编码路由文件中的版本号,并在每次更改时进行搜索和替换。
  2. 为 sbt 构建过程创建一个插件,让它替换你的路由文件中的版本。
于 2013-08-29T12:44:03.943 回答
1

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

GET   /myApp/${play.configuration.getProperty("myApp.ver")}/welcome     myApp.Welcome()
于 2013-08-29T13:47:10.907 回答