User Routing Template Format

Is there any documentation on the routing pattern format for pickup. I want to configure handlers as follows:

/ or /index.html -> Use handler 1
Anything else -> Use handler 2

I tried this, bu did not work:

Handlers.routing()
        .add("GET", "/", handler1)
        .add("GET", "/index.html", handler1)
        .add("GET", "/*", handler2)

Any idea?

+4
source share
1 answer

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()

        // REST API path
        .addPrefixPath("/api", Handlers.routing()
            .get("/customers", exchange -> {...})
            .delete("/customers/{customerId}", exchange -> {...})
            .setFallbackHandler(exchange -> {...}))

        // Redirect root path to /static to serve the index.html by default
        .addExactPath("/", Handlers.redirect("/static"))

        // Serve all static files from a folder
        .addPrefixPath("/static", new ResourceHandler(
            new PathResourceManager(Paths.get("/path/to/www/"), 100))
            .setWelcomeFiles("index.html"))

    ).build().start();

. javascript html , .

+13

Source: https://habr.com/ru/post/1656060/


All Articles