Подтвердить что ты не робот

Файл маршрута Playframework: Отдельные маршруты производства из маршрутов Dev

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

4b9b3361

Ответ 1

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

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

%{ 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 вы пытаетесь получить доступ к маршруту4, вы не сможете получить к нему доступ, и вы увидите страницу RouteNotFound, показывающую, что доступные маршруты - это те, которые вы определили только для Dev.

Ответ 2

Для версии для игр версии 2.x:

  • Вам нужно иметь еще один routes файл, который позволяет сказать prod.routes в корне вашего приложения (тот же самый directoy исходного файла 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