Файл маршрута Playframework: Отдельные производственные маршруты от Dev-маршрутов - PullRequest
25 голосов
/ 15 июля 2011

Есть ли в Play способ аннотировать маршруты, информируя о том, что определенный раздел / групповые маршруты доступны только в режиме dev или prod

Ответы [ 2 ]

37 голосов
/ 15 июля 2011

Ну, это не задокументировано, поэтому я не уверен, намеренно ли это возможно или нет, но я нашел способ сделать эту работу. Обратите внимание, однако, что это недокументированная функция, может означать, что она непреднамеренная, и, следовательно, может сломаться в будущих версиях игры.

Вы можете достичь желаемого, используя следующую строку в вашем файле маршрутов.

%{ 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.

2 голосов
/ 15 июня 2016

Для игровой платформы версии 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

...