怎么使用带有Quarkus的Vertx路由器将所有未找到的路由重定向到index.html?

原学程将引见若何应用戴有Quarkus的Vertx路由器将一切未找到的路由重定向到index.html?的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

怎么使用带有Quarkus的Vertx路由器将所有未找到的路由重定向到index.html? 教程 第1张

成绩描写

我有1个Quarkus运用法式,它全体挨包了1个角度SPA(绑缚在JAR中)。Quarkus供给了供前端花费的后端API路由。建立Quarkus运用法式时,角度运用法式建立被复制到目的中的META-INF/resources途径。

我出有应用JAX-RS去注册我的路由。相反,我直交在fun onRouterReady(@Observes router: Router)办法内的Vertx路由器上以编程方法注册它们。

我愿望将所有未被辨认的路由(Vertx注册的路由或者动态资本)重定向到index.html,以就我的角度运用法式不妨从其一切路由减载。没有幸的是,我找没有就任何办法去做到这1面。

我没有晓得一切Quarkus路由怎样任务。我疑惑Quarkus自己正在应用Servlet(或许能够是Vertx)注册1些路由,由于index.html在根上获得了准确的办事,但是我的身份验证根不妨阻拦未经身份验证减载。

我测验考试了经由过程搜刮找到的各类器械,比方:

router.route("/*").handler(StaticHandler.create())
router.route().handler({ context: RoutingContext ->
 context.reroute("index.html)
})

个中的设法主意是创立1个动态处置法式,而后是1个Catch-all,它会将要求重写到index.html,如许它便会被动态处置法式捕捉,但是这只会招致无穷轮回(动态处置法式仿佛没法找到index.html)。

我借测验考试过经由过程JAX-RS添减挑选器(我愿望防止如许做),但是也没有起感化。

必需有某种办法去树立它,我坚信Quarkus代码确切在某个处所起感化,但是我找没有到它。所有设法主意皆很受迎接。

推举谜底

是以,我将在此答复我本身的成绩,由于给定的谜底出有知足我的特定请求。

Quarkus确切经由过程RESTEasy自力类注册了本身的处置法式(即便我的运用法式中出有包括RESTEasy)。这包含冷从新减载路由(用于开辟形式)、1些平安路由以及指向已知动态资本的动态路由处置法式(假定在编译时已知)。

动态资本处置法式被付与矮优先级,是以是最初被挪用的处置法式之1。它仿佛接收现有动态资本途径以及路由途径(它将其用作/index.html)。

我犯的毛病是出有足够细心天遵守从新路由逻辑。我的代码:

router.route("/*").handler(StaticHandler.create())
router.route().handler({ context: RoutingContext ->
 context.reroute("index.html)
})

将拦阻所有与路由没有婚配的途径,并将它们从新路由到/index.html(我没有盘算停止重定向)。然则,从新路由会再次开动全部路由进程,是以我应用/index.html途径前往到我的通用途理法式,并再次测验考试从新路由它(由于动态处置法式只是在良久今后才被挪用)。

是以,处理计划是保证我只从新路由我还没有测验考试从新路由的途径(而且我不妨从新路由到/而没有是/index.html):

router.routeWithRegex("/.+").handler({ context: RoutingContext ->
 context.reroute("/")
})

以及Quarkus添减的动态资本处置法式将担任其他部门。

佳了闭于怎样应用戴有Quarkus的Vertx路由器将一切未找到的路由重定向到index.html?的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。