Play 中是否有办法注释路线以通知某个部分/组路线仅在开发或生产模式下可用
问问题
4497 次
2 回答
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 语句时结束。
如果在 Dev 模式下您尝试访问 route4,您将无法访问它,并且您将看到 RouteNotFound 页面显示可用的路由是您为 Dev 定义的那些。
于 2011-07-15T06:11:46.970 回答
2
对于播放框架版本 2.x:
- 您需要在应用程序的根目录中拥有另一个
routes
文件prod.routes
(与原始routes
文件相同的目录),该文件仅包含您想要用于生产的路由。 - 然后你创建另一个
.conf
文件,比如prod.conf
里面的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
于 2016-06-15T04:56:26.300 回答