Play中是否有一种方法可以注释路由,以通知某些路段/组路由仅在开发或生产模式下可用
答案 0 :(得分:37)
嗯,这没有记录,所以我不确定这是否有意或无,但我找到了一种方法来完成这项工作。 但是请注意,因为这是一个没有记录的功能,可能意味着它是无意的,因此可能在未来版本的游戏中中断。
您可以使用路线文件中的以下行来实现您想要的效果。
%{ if (play.mode.isDev()) }%
我创建了一个带有几个动作的测试应用程序
public class Application extends Controller {
public static void index() {
render();
}
public static void noDev() {
renderText("NoDev");
}
public static void noProd() {
renderText("NoProd");
}
}
然后我将以下内容添加到我的路线文件
中# Home page
GET / Application.index
# Ignore favicon requests
GET /favicon.ico 404
# Map static resources from the /app/public folder to the /public path
GET /public/ staticDir:public
%{ if (play.mode.isDev()) }%
GET /route1 Application.noDev
GET /route2 Application.noDev
GET /route3 Application.noDev
* /{controller}/{action} {controller}.{action}
%{ if (play.mode.isProd()) }%
GET /route4 Application.noProd
GET /route5 Application.noProd
GET /route6 Application.noProd
* /{controller}/{action} {controller}.{action}
因此,您可以看到使用简单的if语句,它将仅在该模式下执行下一组路由。 if语句将在找到下一个if语句时结束。
如果在开发模式下您尝试访问route4,您将无法访问它,您将看到RouteNotFound页面显示可用路由是您为Dev定义的路径。
答案 1 :(得分:2)
对于播放框架版本2.x:
routes
文件prod.routes
(与原始routes
文件相同),此文件仅包含您需要的路径生产。.conf
文件夹中创建另一个prod.conf
文件,如conf
。播放框架2.4及更新版本:
include "application.conf"
play.http.router=prod.Routes
或者没有新的.conf
文件传递参数:
-Dplay.http.router=prod.Routes
如果超过2.4,那么:
include "application.conf"
application.router=prod.Routes
当您运行生产时,使用-Dconfig.file=prod.conf