我使用ResourceHandler在我的Web服務器上提供JavaScript文件。現在我想提供完全相同的javascript,但在我的url中接受/ {id},所以我可以在我的網站在handleRequest方法內執行POST請求時使用{id}。我嘗試了一個pathTemplate,但是當我嘗試訪問我的網站時,它說它無法找到我的一個js文件(如果我不使用pathTemplate,它會起作用)。隱藏路徑模板和資源處理程序
我能做些什麼才能使它工作?
我使用ResourceHandler在我的Web服務器上提供JavaScript文件。現在我想提供完全相同的javascript,但在我的url中接受/ {id},所以我可以在我的網站在handleRequest方法內執行POST請求時使用{id}。我嘗試了一個pathTemplate,但是當我嘗試訪問我的網站時,它說它無法找到我的一個js文件(如果我不使用pathTemplate,它會起作用)。隱藏路徑模板和資源處理程序
我能做些什麼才能使它工作?
您可以定義兩條路線,一條用於控制器(用於接收發布數據),另一條用於提供您的確切JavaScript文件。
更爲標準的解決方案是擁有一條專用於服務所有資產(包括您的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();
有了這個例子,你的控制器將可在路線/控制器/ {ID}和你的JavaScript文件將直接送達。
請注意,這種服務文件的方式並不是最優的,它適用於文件不太大的情況。爲了更好地提供文件服務,可以使用Undertow的PathResource和PathResourceManager類。
我可能有missaid我想 我想有一個路徑mywebsite.com/{id],這是‘入口’的東西。我的客戶將輸入他們自己的ID,我將提供給他們,然後在我的javascript中將其添加到我的帖子請求中。使用控制器/ {id}它會工作。我需要的只是第一部分,這就是我沒有找到如何做到這一點 – baskwo
從我的例子,如果你讓一個HTTP請求到「/靜態/ 1234」,它會留在網址,以便您可以使用您的JavaScript抓住它邏輯。我還是不知道你是如何開始你的JavaScript文件的下載(從一些純的index.html?) – aramaki
我只是嘗試,它似乎試圖訪問「/靜態/ 1234」子文件夾。 是的,我有一個html文件,我使用aurelia。所以我通過腳本標記在我的index.html中啓動我的JavaScript文件的下載。 現在,而不是/ 1234我在做#1234,它的工作原理,但我寧願做/ 1234比#1234。 – baskwo
如果你分享了一些代碼,這將有所幫助! – aramaki
呀還有沒有什麼真正顯示,除了2行的代碼在這裏^^」 – baskwo