CustomHttpRequestHandler с использованием файла минимальных маршрутов - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь настроить 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 с использованием указанного файла?

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...