Scala 获取播放应用程序的基本url
我想获取应用程序的当前基本url,该应用程序通常Scala 获取播放应用程序的基本url,scala,playframework,playframework-2.2,Scala,Playframework,Playframework 2.2,我想获取应用程序的当前基本url,该应用程序通常http://localhost:9000/在本地主机和http://mydomain.com在服务器上。如果将来我可能会开始使用https 我怎样才能做到这一点?您使用的是什么版本的Play Framework 如果您使用的是Play 1.x,则应使用application.conf变量手动指定应用程序的基本url。这是我为我的应用程序检索基本url的方式。例如: application.baseUrl=http://localhost:9000
http://localhost:9000/
在本地主机和http://mydomain.com
在服务器上。如果将来我可能会开始使用https
我怎样才能做到这一点?您使用的是什么版本的Play Framework 如果您使用的是Play 1.x,则应使用application.conf变量手动指定应用程序的基本url。这是我为我的应用程序检索基本url的方式。例如:
application.baseUrl=http://localhost:9000
%devcloud.application.baseUrl=http://dev-url.com
%prod.application.baseUrl=http://prod-url.com
使用Play Framework 2.x,您可以使用其他配置文件(因此变量值取决于环境-prod、dev、test…),如下所述:
这些解决方案特别适用于不想依赖某个操作或控制器的情况。否则,您可以使用操作中的请求检索绝对URL。然后尝试获取baseUrl:
play.play.application().configuration().getString(“application.baseUrl”)
当前play.play.application().configuration().getString(“application.baseUrl”)代码>在最新版本中已去除润滑脂。下面是解决这个问题的最新方法:
首先将配置注入类:
@Inject
Configuration configuration;
然后像这样使用它:
String baseUrl = configuration.getString("application.baseUrl");
你读过答案吗?@Artsiom,正如预期的那样,Router.getFullUrl(“Controller.action”)
-没有这样的方法,routes.MyController.myMethod().absoluteURL(request())代码>-相同。@Artsiom,但我不想引用控制器和操作来获取基本Url,因为它们可能会发生更改。但我也不想依赖某个端口,因为它碰巧也可以工作。然后,您还必须为该端口添加配置变量。更改应用程序的运行端口(即使在开发模式下这并不重要)或协议(http或https)不是一个次要的决定,因此处理一个或两个变量并不是那么糟糕;)然后,当应用程序在不同于9000的端口上运行时,我必须始终更改它。我不想依赖它碰巧运行的端口。我希望它是自动的。