如何使用 Vertx 路由器和 Quarkus 将所有未找到的路由重定向到 index.html?

2024-01-03

我有一个 Quarkus 应用程序,它全部打包了一个 Angular SPA(捆绑在 JAR 中)。 Quarkus 提供后端 API 路由供前端使用。 Angular 应用程序构建被复制到META-INF/resources构建 Quarkus 应用程序时目标中的路径。

我没有使用 JAX-RS 来注册我的路线。相反,我直接以编程方式在 Vertx 路由器上注册它们fun onRouterReady(@Observes router: Router) method.

我希望将任何无法识别的路由(无论是作为 Vertx 注册的路由还是作为静态资源)重定向到index.html这样我的 Angular 应用程序就可以从其所有路由加载。不幸的是我无法找到任何方法来做到这一点。

我不知道 Quarkus 的所有路由是如何运作的。我怀疑 Quarkus 本身正在使用 Servlet(或者可能是 Vertx)注册一些路由,因为index.html已在根上正确提供服务,但我的身份验证根可以防止在未经身份验证的情况下加载。

我尝试了通过搜索找到的各种东西,例如:

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

其中的想法是创建一个静态处理程序,然后是一个包罗万象的处理程序,它将重写请求index.html这样它就会被静态处理程序捕获,但这只会导致无限循环(静态处理程序似乎无法找到index.html).

我还尝试通过 JAX-RS 添加过滤器(我想避免),但这也不起作用。

必须有某种方法来设置它,我确信 Quarkus 代码确实在某个地方做了,但我找不到它。任何想法都非常感激。


你需要观察Router在应用程序范围类中的某处并设置 404 错误处理程序以重定向到index.html

public void init(@Observes Router router) {
        router.errorHandler(404, routingContext -> {
            routingContext.response().setStatusCode(302).putHeader("Location", "/index.html").end();
        });
}

PS使用routingContext.reroute("index.html");也可以工作,但它会保持原来的路径(例如你写的/testabc,它将显示您的 html 文件,但路径不会/index.html)。如果您确实需要这个,请将其替换为您的选项errorHandler

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Vertx 路由器和 Quarkus 将所有未找到的路由重定向到 index.html? 的相关文章

  • 由于连接超时,无法通过 ImageIO.read(url) 获取图像

    下面的代码似乎总是失败 URL url new URL http userserve ak last fm serve 126 8636005 jpg Image img ImageIO read url System out printl
  • 在 Kotlin 中,处理可为空值、引用或转换它们的惯用方法是什么

    如果我有一个可为空的类型Xyz 我想引用它或将其转换为不可空类型Xyz 在 Kotlin 中这样做的惯用方法是什么 例如 这段代码是错误的 val something Xyz createPossiblyNullXyz something
  • Java 变量的作用域

    我不明白为什么这段代码的输出是10 package uno public class A int x 10 A int x 12 new B public static void main String args int x 11 new
  • 6:需要显示BuyFlow UI

    There is a problem when i am click on payWithGoogle Button I am implementing Google Pay in my Android Application and wh
  • Java:VM 如何在 32 位处理器上处理 64 位“long”

    JVM 如何在 32 位处理器上处理 64 位的原始 long 在多核 32 位机器上可以并行利用多个核心吗 64 位操作在 32 位机器上慢了多少 它可能使用多个核心来运行不同的线程 但不会并行使用它们进行 64 位计算 64 位长基本上
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • Install4j:如何在安装结束时执行命令行 java -jar filename.jar

    在 Intall4j 中 在安装结束时 我只想通过执行如下命令行来初始化某些内容 java jar filename jar 我怎样才能归档这个任务install4j Thanks 将 运行可执行文件或批处理文件 操作添加到 安装屏幕 并设
  • 如何在java中使jpeg无损?

    有没有人可以告诉我如何使用编写 jpeg 文件losslessjava中的压缩 我使用下面的代码读取字节来编辑字节 WritableRaster raster image getRaster DataBufferByte buffer Da
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 从 Stax XMLStreamReader 读取以解组部分

    我正在使用 Stax 游标 API 从大型 xml 文件中提取数据 当前 我转到特殊标签的开头并使用 JAXB 解组该标签 这对于格式良好的 xml 文件效果很好 但不久前我有一个文档 其中数十万个标签中有一个未关闭 JAXB 使用 XML
  • 使用 Java 从 S3 上的文件在 S3 上创建 zip 文件

    我在 S3 上有很多文件 需要对其进行压缩 然后通过 S3 提供压缩文件 目前 我将它们从流压缩到本地文件 然后再次上传该文件 这会占用大量磁盘空间 因为每个文件大约有 3 10MB 而且我必须压缩多达 100 000 个文件 所以一个 z
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 阻止 OSX 变音符号为所有用户禁用 Java 中的 KeyBindings?

    注 我知道这个问题 https stackoverflow com questions 40335285 java keybinds stop working after holding down a key用户必须输入终端命令才能解决此问
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • Angular 2在两个组件之间传递数据

    我想在两个组件之间传递数据 但我的问题是 我有两个组件 假设一个是 主 另一个是 模态对话框 在我的主要部分中 我想打开模态对话框并从模态对话框中获取数据 而无需离开我的主要组件 我知道如何使用 Input 但我看不到在我的应用程序中使用它
  • 角度 2 ngIf 与可观察?

    我有一个非常简单的服务 它的工作是从 api authenticate url 获取 200 或 401 auth service ts Injectable export class AuthService constructor pri
  • Java中有类似分支/跳转表的东西吗?

    Java有类似分支表或跳转表的东西吗 分支表或跳转表是 根据维基百科 http en wikipedia org wiki Branch table 用于描述使用分支指令表将程序控制 分支 转移到程序的另一部分 或可能已动态加载的不同程序
  • Java 推断泛型类型

    我正在寻找类似的推断捕获泛型类型的概念 类似于以下方法片段 但不是捕获泛型类型的类 public

随机推荐

  • 辅助功能:Talkback、WebView 和用户区域设置

    我开发了一个包含 Webview 的应用程序 我想让我的应用程序完全可访问 因此对于 webview 元素 我希望 TalkBack 以完全可访问的方式读取 html 元素 例如 标题 横幅 EditText 我已经看到WebView中的T
  • 无法添加指定 URI 的部分,因为它已在包中

    我正在 teamcity 中使用 NUGET Pack 来构建包 但它正在创建以下错误 我正在使用 nuget teamcity 版本 2 2 1 Step 2 2 Build Package NuGet Pack 14s 12 10 40
  • 使用 Python 从一个文本文件复制到另一个文本文件

    我想将某些文本行从一个文本文件复制到另一个文本文件 在我当前的脚本中 当我搜索字符串时 它会复制所有内容 如何仅复制文本的特定部分 例如 仅当其中包含 tests file myword 时才复制行 当前代码 usr bin env pyt
  • 在nHibernate的Criteria中编写子查询

    我已经在 Criteria 中阅读了有关子查询的内容 但我仍然无法正确掌握它 在这里我举一个例子 如果有人可以帮助我使用子查询来编写它 那就太好了 假设我们有桌子 Employee EmployeeId int Name string Po
  • 带有 GridBagLayout 的嵌套 JPanel

    我有一个JFrame with GridBagLayout Weightx 和 Weighty 值被分配不同的非零值并且 GridBagConstraints fill GridBagConstraints BOTH 我在其中一个单元格中嵌
  • 在 Java 中存储转换后的 BufferedImage

    在Java中 我想使用代码来转换和保存它们 而不是使用photoshop来转换我的图像 我在程序中使用的 我创建了一个 AffineTransform 对象 at 并调用rotate 方法 我有一个名为 图像 的 BufferedImage
  • 发送列表/地图作为 POST 参数 jersey

    我想将 HashMap 对象作为 POST 变量发送到 ReST 资源 我用的是Form发送对象的类 客户端代码 public static void main String args ClientConfig config new Def
  • 从主屏幕删除图标后,如何恢复渐进式网络应用程序的“添加到主屏幕”横幅?

    原因 我做了一个Progressive web app 在浏览器中打开 一切都很好 浏览器让我将其添加到主屏幕 现在 我想在演示文稿中演示这一点 因此 从主屏幕上删除了该图标 但在过去一整天里 我一直在 chrome 中浏览该网站 但横幅再
  • 如何使用 matplotlib 以指数方式缩放 Y 轴

    我正在尝试创建一个带有指数 Y 轴的 matplotlib 图 就像我在下面模拟的假图一样 对于我的数据 我希望在接近最大 Y 值时将这些值展开 我想在 Y 接近零时压缩这些值 所有正常的 对数 示例都会执行相反的操作 当值远离零时 它们会
  • 尽管设置了适当的标志,仍无法使用 pyenv 安装 32 位 Python

    我正在寻找安装 2 6 6 Python 作为32 bit with pyenv在 OS X 上 但是得到 ERROR The Python ssl extension was not compiled Missing the OpenSS
  • 错误 itms-90122 - 可执行文件大小无效

    我只是在将应用程序上传到应用程序商店时遇到一些问题 问题是armv7的60MB文件大小限制 见截图 几乎没有嵌入图像或类似的东西 应用程序文件只有 0 5MB 大 但我确信由于下次更新它会很快增加 有没有可能减少应用程序的大小 或者也许更改
  • 当只处理单个图像时是否需要 imagedestroy() ?

    我正在使用 PHP 来使用 GD 扩展处理一些图像 代码结构相当复杂 图像被分配在代码的 深处 并且有许多 IF 可以简单地退出 该脚本仅处理单个图像 一旦将其写入文件 它就会退出 我想我可以使用 try catch 代替 但我有兴趣知道是
  • 在 python 中多重处理 shell 脚本

    我的要求是与多处理并行运行 shell 函数或脚本 目前 我使用以下不使用多重处理的脚本来完成它 此外 当我并行启动 10 个作业时 其中一项作业可能会提前完成 并且必须等待其他 9 个作业完成 我想借助 python 中的多处理来消除这个
  • filter_var 和filter_input 之间的区别

    为什么这不起作用 if data email filter var INPUT POST email FILTER SANITIZE EMAIL errors email Invalid Email 这是有效的 if data email
  • 与 Ace Editor 分开的托管模式文件

    我想将 ACE Editor 与桌面应用程序捆绑在一起 并将其呈现在 WebView 中 艾斯正在奔跑file 协议 有没有办法将模式文件与ace js 例如ace js将位于应用程序包内 Application MyApp app 但模式
  • Visual Studio:在调试时编辑 XAML 文件

    我有一个在调试模式下运行的 WPF 应用程序 我想在应用程序仍在运行时更改 XAML I m not要求编辑并继续 我不介意我必须重新启动应用程序才能使更改生效 我只想能够更改 XAML 文件当应用程序仍在运行时 而不必 1 记住我想要在
  • 电话间隙。无法启动地理定位服务

    PhoneGap 版本 2 0 0 Android API 级别 16 4 0 3 版本 提示错误的代码示例 navigator geolocation getCurrentPosition onSuccess onError enable
  • VBA删除带有数字的整行(For循环的变量)

    我正在努力解决一个非常基本的问题 Public Sub Optionfilter Dim c As Range Dim StrikeD As Date Dim RefD As Date Dim StrikeP As Integer Dim
  • Python:如何保存简单的设置/配置文件?

    我不在乎是不是JSON pickle YAML 管他呢 我见过的所有其他实现都不向前兼容 所以如果我有一个配置文件 在代码中添加一个新密钥 然后加载该配置文件 它就会崩溃 有什么简单的方法可以做到这一点吗 python中的配置文件 根据所需
  • 如何使用 Vertx 路由器和 Quarkus 将所有未找到的路由重定向到 index.html?

    我有一个 Quarkus 应用程序 它全部打包了一个 Angular SPA 捆绑在 JAR 中 Quarkus 提供后端 API 路由供前端使用 Angular 应用程序构建被复制到META INF resources构建 Quarkus