在 Vert.x Web 路由器上不存在的路由上提供静态 webroot/index.html 数据

Rai*_*nod 1 java rest routes web vert.x

设想:

  • 我已将静态数据放置在 webroot/* 文件夹位置,服务器根据请求提供这些数据。
  • 我有很多用于路由 API 的路由。

路由器的代码:

Router router = Router.router(vertx);
router.route().handler(BodyHandler.create());

router.route("/api/login/account").handler((RoutingContext ctx) -> {
  // Handler is here
});
router.route("/api/currentUser").handler(ctx -> {
  // Handler is here
});
router.route().handler(StaticHandler.create());
router.route("/*").hanler(StaticHandler.create("webroot/index.html"));
Run Code Online (Sandbox Code Playgroud)

文件夹 webroot 有以下文件:

  • 索引.css
  • 索引.html
  • 图片/图片.jpg

问题:

  • 需要在路由不匹配时提供 webroot/index.html 文件(它不起作用;返回值 **“找不到资源”)**:如果我请求 /xyz/abc 的数据,则应提供 webroot/index.html 。
  • 需要提供其他静态文件作为其请求的参数(它正在工作):如果我请求 /index.css 的数据,则应该提供 webroot/index.css 。
  • 需要响应 API 请求的数据(它正在工作):如果我请求 /api/login/account 的数据,那么它应该响应。

我哪里错过了这里?解决方案是什么?

Pau*_*pes 5

您应该添加最后一个处理程序,以便在一切失败时发送您想要的文件。例如:

ctx.response().sendFile('webroot/index.html');
Run Code Online (Sandbox Code Playgroud)

不要忘记添加您可能需要的标头,例如缓存指令、位置、内容类型......