暗流路径模板和资源处理程序



当我进入我的Web服务器时,我正在使用ResourceHandler来提供javascript文件。现在我想提供完全相同的 javascript,但在我的 url 中接受/{id},这样当我的网站在 handleRequest 方法内执行 POST 请求时,我可以使用 {id}。我尝试使用路径模板,但是当我尝试访问我的网站时,它说它找不到我的一个js文件(如果我不使用pathTemplate,它可以工作)。

我能做些什么来让它工作?

您可以定义两个路由,一个用于控制器(用于接收发布数据),另一个用于提供确切的javascript文件。

更标准的解决方案是有一个专用于为所有资产(包括你的javascript应用程序)提供服务的路由。为此,请看以下答案:暗流的路由模板格式

Undertow.builder().addHttpListener(8080, "0.0.0.0")
  .setHandler(Handlers.path()
    // Controllers
    .addPrefixPath("/controller", Handlers.routing()
        .post("/{id}", exchange -> {
          String id = exchange.getQueryParameters().get("id").getFirst();
        }))
    // Serve your file, preserving any route information
    .addPrefixPath("/app.js",  exchange -> {
        Path p = Paths.get("/path/to/app.js");
        exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/javascript");
        exchange.getResponseSender().send(
          ByteBuffer.wrap(Files.readAllBytes(p))
      )})
).build().start();
在这个例子中,你的

控制器将在路由/controller/{id} 上可用,你的 javascript 文件将直接提供。

请注意,这种提供文件的方式不是最佳的,如果文件不是太大,它就会起作用。为了更好地提供文件,可以使用Undertow的PathResource和PathResourceManager类。

相关内容

  • 没有找到相关文章

最新更新