Dynamic 播放框架:根据版本号动态路由

Dynamic 播放框架:根据版本号动态路由,dynamic,playframework,routes,playframework-2.0,Dynamic,Playframework,Routes,Playframework 2.0,我试图在URI路由中动态定义一个版本 我最迫切的想法是 (a) 我已在application.conf中配置了一行,说明我的当前版本: myApp.ver = 0.1 我不想在routes文件中将其作为URI的一部分使用,例如: GET /myApp/{version}/welcome controller.myApp.Welcome() 这样做的目的不是将版本号传递给Welcome()方法 但是要从application.conf文件获取版本 我在路由文件中搜索了定义参数,但没有找到对我有

我试图在URI路由中动态定义一个版本

我最迫切的想法是

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

myApp.ver = 0.1
我不想在routes文件中将其作为URI的一部分使用,例如:

GET /myApp/{version}/welcome controller.myApp.Welcome()
这样做的目的不是将版本号传递给Welcome()方法 但是要从application.conf文件获取版本

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

b) 另一个想法是在路由中设置一个变量,类似于:

CurrentVersion = 0.1
并在URI中使用它

我怎样才能解决这个问题?我还没有找到这样的例子


谢谢。

如果要对每条路由执行此操作,应该可以将
应用程序.baseUrl
设置为包含您的版本号。为了方便地执行此操作,您可以在
application.conf
中定义版本,而不是
Build.scala
文件

如果您只想对某些路线执行此操作,那么似乎没有简单的解决方案。如果可以忽略路由中的参数,我会说使用regexp参数并在全局路由器中验证它-不幸的是,这没有将参数传递给控制器

因此,我看到了另外两种选择:

  • 在routes文件中硬编码版本号,并在每次更改时进行搜索和替换
  • 为sbt构建过程创建一个插件,并让它替换routes文件中的版本

  • 如果要对每个路由执行此操作,应该可以将
    应用程序.baseUrl
    设置为包含您的版本号。为了方便地执行此操作,您可以在
    application.conf
    中定义版本,而不是
    Build.scala
    文件

    如果您只想对某些路线执行此操作,那么似乎没有简单的解决方案。如果可以忽略路由中的参数,我会说使用regexp参数并在全局路由器中验证它-不幸的是,这没有将参数传递给控制器

    因此,我看到了另外两种选择:

  • 在routes文件中硬编码版本号,并在每次更改时进行搜索和替换
  • 为sbt构建过程创建一个插件,并让它替换routes文件中的版本

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

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

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

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

    这给了我:
    sbt.PlayExceptions$RoutesCompilationException:Compilation error[预期的标识符]
    。我不认为你可以使用与模板相同的语法。我们可以使用与模板相同的语法。我已经证实这对我有效。我假设播放1.2.x版本。对于2.x,您可能需要以类似的方式进行操作。问题被标记为play 2,我查看了play 2的routes文件解析器,没有看到任何用于替换类似变量的功能。这给了我:
    sbt.playexExceptions$RouteCompilationException:编译错误[Identifier expected]
    。我不认为你可以使用与模板相同的语法。我们可以使用与模板相同的语法。我已经证实这对我有效。我假设播放1.2.x版本。对于2.x,您可能需要以类似的方式进行操作。问题被标记为play 2,我查看了play 2的routes文件解析器,没有看到任何用于替换类似变量的功能。