Есть ли способ в Play, чтобы комментировать маршруты, чтобы сообщить, что определенные маршруты раздела/группы доступны только в режиме dev или prod.
Файл маршрута Playframework: Отдельные маршруты производства из маршрутов Dev
Ответ 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