У меня есть приложение Quarkus, которое упаковывает Angular SPA (входит в JAR). Quarkus предоставляет API-интерфейсы для бэкэнда. При сборке приложения Quarkus сборка приложения Angular копируется в путь META-INF/resources
в целевом объекте.
Я не использую JAX-RS для регистрации своих маршрутов. Вместо этого я непосредственно регистрирую их программно на маршрутизаторе Vertx в методе fun onRouterReady(@Observes router: Router)
.
Я хотел бы, чтобы любой маршрут не был распознан (либо как зарегистрированный Vertx маршрут, либо как ресурс stati c) быть перенаправленным на index.html
, чтобы мое приложение Angular могло загружаться со всех его маршрутов. К сожалению, я не смог найти никакого способа сделать это.
Я не знаю, как функционируют все маршруты Quarkus. Я подозреваю, что сам Quarkus регистрирует некоторые маршруты с использованием сервлетов (или, возможно, Vertx), потому что index.html
правильно обслуживается на root, но моя аутентификация root может предотвратить загрузку без аутентификации.
Я пробовал различные вещи, которые я нашел в результате поиска, такие как:
router.route("/*").handler(StaticHandler.create())
router.route().handler({ context: RoutingContext ->
context.reroute("index.html)
})
, где идея состоит в том, чтобы создать обработчик stati c, а затем перехватить все, что перезапишет запрос в index.html
, так что он затем перехватывается обработчиком stati c, но это просто приводит к бесконечному l oop (кажется, что обработчик stati c не может найти index.html
).
I Я также пытался добавить фильтр через JAX-RS (чего я хотел бы избежать), но это тоже не работает.
Должен быть какой-то способ настроить это, и я уверен, что код Quarkus действительно где-то работает , но я не могу найти это. Любые идеи высоко ценится.