gpt4 book ai didi

javascript - undertow 路径模板和资源处理程序

转载 作者:行者123 更新时间:2023-12-01 02:54:12 24 4
gpt4 key购买 nike

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

我该怎么做才能使其正常工作?

最佳答案

您可以定义两种路由,一种用于您的 Controller (用于接收发布数据),另一种用于提供您的确切 JavaScript 文件。

一个更标准的解决方案是有一个专门为所有 Assets (包括您的 JavaScript 应用程序)提供服务的路由。为此,请查看以下答案:Routing template format for undertow

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 将在路由 /controller/{id} 上可用,并且您的 JavaScript 文件将直接提供服务。

请注意,这种提供文件的方式并不是最佳的,如果文件不太大,它就可以工作。为了获得一种更好的文件服务方式,可以使用 Undertow 的 PathResource 和 PathResourceManager 类。

关于javascript - undertow 路径模板和资源处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46816336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com