There are several ways to achieve this:
1) The main approach: PathHandler
Handlers.path()
.addExactPath("/path1", handler1)
.addPrefixPath("/path2", handler2);
handler1will match only / path1 (or / path1 / ).
handler2will match / path2 , / path2 / and everything else starting with / path2 / .
2) Route approach: RoutingHandler
RoutingHandler, . API REST, ( get RoutingHandler).
Handlers.routing().get("/{test}/*", exchange -> {
PathTemplateMatch pathMatch = exchange.getAttachment(PathTemplateMatch.ATTACHMENT_KEY);
String itemId1 = pathMatch.getParameters().get("test"); // or exchange.getQueryParameters().get("test")
String itemId2 = pathMatch.getParameters().get("*"); // or exchange.getQueryParameters().get("*")
}))
* (, a/b/c).
*, , (test ).
, , , (exchange.getQueryParameters()). . , : Handlers.routing(false).get(...), .
, , fallbackHandler, RoutingHandler.
Handlers.routing()
.get("/", handler1)
.get("/index.html", handler1)
.setFallbackHandler(handler2);
fallbackHandler 404. handler2 , GET.
, , PathHandler RoutingHandler .
:
Undertow.builder().addHttpListener(8080, "0.0.0.0")
.setHandler(Handlers.path()
.addPrefixPath("/api", Handlers.routing()
.get("/customers", exchange -> {...})
.delete("/customers/{customerId}", exchange -> {...})
.setFallbackHandler(exchange -> {...}))
.addExactPath("/", Handlers.redirect("/static"))
.addPrefixPath("/static", new ResourceHandler(
new PathResourceManager(Paths.get("/path/to/www/"), 100))
.setWelcomeFiles("index.html"))
).build().start();
. javascript html , .