Я пытаюсь настроить sh WebApp и, в зависимости от контекста, должна быть доступна только часть маршрутов. Например, если база данных не была перенесена, все маршруты перенаправляются на страницу обслуживания, за исключением маршрутов admin и auth.
Для этого я создал пользовательскую реализацию DefaultHttpRequestHandler
с помощью регулярных выражений чтобы отфильтровать мои маршруты:
public final class CustomHttpRequestHandler extends DefaultHttpRequestHandler {
//...
@Override
public HandlerForRequest handlerForRequest(final Http.RequestHeader request) {
final boolean isInMaintenance = ...;
if (isInMaintenance && !request.uri().matches("^/(assets|webjars|admin|auth)/.*")) {
Router minimalRouter = Router.empty();
Handler handler = minimalRouter.route(request).orElseGet(
() -> EssentialAction.of(requestHeader -> Accumulator.done(globalController.maintenance())));
return new HandlerForRequest(request, handler);
}
return super.handlerForRequest(request);
}
}
Это работает хорошо, но каждый раз, когда мне нужен новый маршрут в минимальном маршрутизаторе , я должен изменить регулярное выражение. Таким образом, поскольку существует возможность разбить файл маршрутов, я хочу, чтобы минимальный маршрутизатор был инициализирован с использованием файла c minimal.routes .
Am Я использовал правильный подход? Есть ли помощник для создания Router
с использованием указанного файла?
Заранее спасибо!