Dynamic 播放框架:根据版本号动态路由
我试图在URI路由中动态定义一个版本 我最迫切的想法是 (a) 我已在application.conf中配置了一行,说明我的当前版本: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文件获取版本 我在路由文件中搜索了定义参数,但没有找到对我有
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参数并在全局路由器中验证它-不幸的是,这没有将参数传递给控制器
因此,我看到了另外两种选择:
如果要对每个路由执行此操作,应该可以将
应用程序.baseUrl
设置为包含您的版本号。为了方便地执行此操作,您可以在application.conf
中定义版本,而不是Build.scala
文件
如果您只想对某些路线执行此操作,那么似乎没有简单的解决方案。如果可以忽略路由中的参数,我会说使用regexp参数并在全局路由器中验证它-不幸的是,这没有将参数传递给控制器
因此,我看到了另外两种选择:
在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文件解析器,没有看到任何用于替换类似变量的功能。