Playframework路径文件:Dev开发路线的独立生产路线

时间:2011-07-14 21:09:13

标签: playframework routes playframework-1.x

Play中是否有一种方法可以注释路由,以通知某些路段/组路由仅在开发或生产模式下可用

2 个答案:

答案 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
  • 现在,这个新的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

运行它