public static interface RouterFunctions.Builder
RouterFunctions.route().| Modifier and Type | Method and Description |
|---|---|
RouterFunctions.Builder |
add(RouterFunction<ServerResponse> routerFunction)
Adds the given route to this builder.
|
RouterFunctions.Builder |
after(BiFunction<ServerRequest,ServerResponse,ServerResponse> responseProcessor)
Filter the response object for all routes created by this builder with the given response
processing function.
|
RouterFunctions.Builder |
before(Function<ServerRequest,ServerRequest> requestProcessor)
Filter the request object for all routes created by this builder with the given request
processing function.
|
RouterFunction<ServerResponse> |
build()
Builds the
RouterFunction. |
RouterFunctions.Builder |
DELETE(String pattern,
HandlerFunction<ServerResponse> handlerFunction)
Adds a route to the given handler function that handles all HTTP
DELETE requests
that match the given pattern. |
RouterFunctions.Builder |
DELETE(String pattern,
RequestPredicate predicate,
HandlerFunction<ServerResponse> handlerFunction)
Adds a route to the given handler function that handles all HTTP
DELETE requests
that match the given pattern and predicate. |
RouterFunctions.Builder |
filter(HandlerFilterFunction<ServerResponse,ServerResponse> filterFunction)
Filters all routes created by this builder with the given filter function.
|
RouterFunctions.Builder |
GET(String pattern,
HandlerFunction<ServerResponse> handlerFunction)
Adds a route to the given handler function that handles all HTTP
GET requests
that match the given pattern. |
RouterFunctions.Builder |
GET(String pattern,
RequestPredicate predicate,
HandlerFunction<ServerResponse> handlerFunction)
Adds a route to the given handler function that handles all HTTP
GET requests
that match the given pattern and predicate. |
RouterFunctions.Builder |
HEAD(String pattern,
HandlerFunction<ServerResponse> handlerFunction)
Adds a route to the given handler function that handles all HTTP
HEAD requests
that match the given pattern. |
RouterFunctions.Builder |
HEAD(String pattern,
RequestPredicate predicate,
HandlerFunction<ServerResponse> handlerFunction)
Adds a route to the given handler function that handles all HTTP
HEAD requests
that match the given pattern and predicate. |
RouterFunctions.Builder |
nest(RequestPredicate predicate,
Consumer<RouterFunctions.Builder> builderConsumer)
Route to a built router function if the given request predicate applies.
|
RouterFunctions.Builder |
nest(RequestPredicate predicate,
Supplier<RouterFunction<ServerResponse>> routerFunctionSupplier)
Route to the supplied router function if the given request predicate applies.
|
<T extends Throwable> |
onError(Class<T> exceptionType,
BiFunction<? super T,ServerRequest,reactor.core.publisher.Mono<ServerResponse>> responseProvider)
Filters all exceptions of the given type by applying the given response provider
function.
|
RouterFunctions.Builder |
onError(Predicate<? super Throwable> predicate,
BiFunction<? super Throwable,ServerRequest,reactor.core.publisher.Mono<ServerResponse>> responseProvider)
Filters all exceptions that match the predicate by applying the given response provider
function.
|
RouterFunctions.Builder |
OPTIONS(String pattern,
HandlerFunction<ServerResponse> handlerFunction)
Adds a route to the given handler function that handles all HTTP
OPTIONS requests
that match the given pattern. |
RouterFunctions.Builder |
OPTIONS(String pattern,
RequestPredicate predicate,
HandlerFunction<ServerResponse> handlerFunction)
Adds a route to the given handler function that handles all HTTP
OPTIONS requests
that match the given pattern and predicate. |
RouterFunctions.Builder |
PATCH(String pattern,
HandlerFunction<ServerResponse> handlerFunction)
Adds a route to the given handler function that handles all HTTP
PATCH requests
that match the given pattern. |
RouterFunctions.Builder |
PATCH(String pattern,
RequestPredicate predicate,
HandlerFunction<ServerResponse> handlerFunction)
Adds a route to the given handler function that handles all HTTP
PATCH requests
that match the given pattern and predicate. |
RouterFunctions.Builder |
path(String pattern,
Consumer<RouterFunctions.Builder> builderConsumer)
Route to a built router function if the given path prefix pattern applies.
|
RouterFunctions.Builder |
path(String pattern,
Supplier<RouterFunction<ServerResponse>> routerFunctionSupplier)
Route to the supplied router function if the given path prefix pattern applies.
|
RouterFunctions.Builder |
POST(String pattern,
HandlerFunction<ServerResponse> handlerFunction)
Adds a route to the given handler function that handles all HTTP
POST requests
that match the given pattern. |
RouterFunctions.Builder |
POST(String pattern,
RequestPredicate predicate,
HandlerFunction<ServerResponse> handlerFunction)
Adds a route to the given handler function that handles all HTTP
POST requests
that match the given pattern and predicate. |
RouterFunctions.Builder |
PUT(String pattern,
HandlerFunction<ServerResponse> handlerFunction)
Adds a route to the given handler function that handles all HTTP
PUT requests
that match the given pattern. |
RouterFunctions.Builder |
PUT(String pattern,
RequestPredicate predicate,
HandlerFunction<ServerResponse> handlerFunction)
Adds a route to the given handler function that handles all HTTP
PUT requests
that match the given pattern and predicate. |
RouterFunctions.Builder |
resources(Function<ServerRequest,reactor.core.publisher.Mono<Resource>> lookupFunction)
Route to resources using the provided lookup function.
|
RouterFunctions.Builder |
resources(String pattern,
Resource location)
Route requests that match the given pattern to resources relative to the given root location.
|
RouterFunctions.Builder GET(String pattern, HandlerFunction<ServerResponse> handlerFunction)
GET requests
that match the given pattern.pattern - the pattern to match tohandlerFunction - the handler function to handle all GET requests that
match patternRouterFunctions.Builder GET(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction)
GET requests
that match the given pattern and predicate.
For instance, the following example routes GET requests for "/user" that accept JSON
to the listUsers method in userController:
RouterFunction<ServerResponse> route =
RouterFunctions.route()
.GET("/user", RequestPredicates.accept(MediaType.APPLICATION_JSON), userController::listUsers)
.build();
pattern - the pattern to match topredicate - additional predicate to matchhandlerFunction - the handler function to handle all GET requests that
match patternRequestPredicatesRouterFunctions.Builder HEAD(String pattern, HandlerFunction<ServerResponse> handlerFunction)
HEAD requests
that match the given pattern.pattern - the pattern to match tohandlerFunction - the handler function to handle all HEAD requests that
match patternRouterFunctions.Builder HEAD(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction)
HEAD requests
that match the given pattern and predicate.pattern - the pattern to match topredicate - additional predicate to matchhandlerFunction - the handler function to handle all HEAD requests that
match patternRouterFunctions.Builder POST(String pattern, HandlerFunction<ServerResponse> handlerFunction)
POST requests
that match the given pattern.pattern - the pattern to match tohandlerFunction - the handler function to handle all POST requests that
match patternRouterFunctions.Builder POST(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction)
POST requests
that match the given pattern and predicate.
For instance, the following example routes POST requests for "/user" that contain JSON
to the addUser method in userController:
RouterFunction<ServerResponse> route =
RouterFunctions.route()
.POST("/user", RequestPredicates.contentType(MediaType.APPLICATION_JSON), userController::addUser)
.build();
pattern - the pattern to match topredicate - additional predicate to matchhandlerFunction - the handler function to handle all POST requests that
match patternRouterFunctions.Builder PUT(String pattern, HandlerFunction<ServerResponse> handlerFunction)
PUT requests
that match the given pattern.pattern - the pattern to match tohandlerFunction - the handler function to handle all PUT requests that
match patternRouterFunctions.Builder PUT(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction)
PUT requests
that match the given pattern and predicate.
For instance, the following example routes PUT requests for "/user" that contain JSON
to the editUser method in userController:
RouterFunction<ServerResponse> route =
RouterFunctions.route()
.PUT("/user", RequestPredicates.contentType(MediaType.APPLICATION_JSON), userController::editUser)
.build();
pattern - the pattern to match topredicate - additional predicate to matchhandlerFunction - the handler function to handle all PUT requests that
match patternRouterFunctions.Builder PATCH(String pattern, HandlerFunction<ServerResponse> handlerFunction)
PATCH requests
that match the given pattern.pattern - the pattern to match tohandlerFunction - the handler function to handle all PATCH requests that
match patternRouterFunctions.Builder PATCH(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction)
PATCH requests
that match the given pattern and predicate.
For instance, the following example routes PATCH requests for "/user" that contain JSON
to the editUser method in userController:
RouterFunction<ServerResponse> route =
RouterFunctions.route()
.PATCH("/user", RequestPredicates.contentType(MediaType.APPLICATION_JSON), userController::editUser)
.build();
pattern - the pattern to match topredicate - additional predicate to matchhandlerFunction - the handler function to handle all PATCH requests that
match patternRouterFunctions.Builder DELETE(String pattern, HandlerFunction<ServerResponse> handlerFunction)
DELETE requests
that match the given pattern.pattern - the pattern to match tohandlerFunction - the handler function to handle all DELETE requests that
match patternRouterFunctions.Builder DELETE(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction)
DELETE requests
that match the given pattern and predicate.pattern - the pattern to match topredicate - additional predicate to matchhandlerFunction - the handler function to handle all DELETE requests that
match patternRouterFunctions.Builder OPTIONS(String pattern, HandlerFunction<ServerResponse> handlerFunction)
OPTIONS requests
that match the given pattern.pattern - the pattern to match tohandlerFunction - the handler function to handle all OPTIONS requests that
match patternRouterFunctions.Builder OPTIONS(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction)
OPTIONS requests
that match the given pattern and predicate.pattern - the pattern to match topredicate - additional predicate to matchhandlerFunction - the handler function to handle all OPTIONS requests that
match patternRouterFunctions.Builder add(RouterFunction<ServerResponse> routerFunction)
RouterFunctions.route(RequestPredicate, HandlerFunction)
to allow for more flexible predicate matching.
For instance, the following example adds the router function returned from
OrderController.routerFunction().
to the changeUser method in userController:
RouterFunctionlt;ServerResponsegt; route =
RouterFunctions.route()
.GET("/users", userController::listUsers)
.add(orderController.routerFunction());
.build();
routerFunction - the router function to be addedRequestPredicatesRouterFunctions.Builder resources(String pattern, Resource location)
Resource location = new FileSystemResource("public-resources/");
RouterFunction<ServerResponse> resources = RouterFunctions.resources("/resources/**", location);
pattern - the pattern to matchlocation - the location directory relative to which resources should be resolvedRouterFunctions.Builder resources(Function<ServerRequest,reactor.core.publisher.Mono<Resource>> lookupFunction)
Resource for the given request, it will be it will be exposed using a
HandlerFunction that handles GET, HEAD, and OPTIONS requests.lookupFunction - the function to provide a Resource given the ServerRequestRouterFunctions.Builder nest(RequestPredicate predicate, Supplier<RouterFunction<ServerResponse>> routerFunctionSupplier)
For instance, the following example creates a nested route with a "/user" path predicate, so that GET requests for "/user" will list users, and POST request for "/user" will create a new user.
RouterFunction<ServerResponse> nestedRoute =
RouterFunctions.route()
.nest(RequestPredicates.path("/user"), () ->
RouterFunctions.route()
.GET(this::listUsers)
.POST(this::createUser)
.build())
.build();
predicate - the predicate to testrouterFunctionSupplier - supplier for the nested router function to delegate to if
the predicate appliesRequestPredicatesRouterFunctions.Builder nest(RequestPredicate predicate, Consumer<RouterFunctions.Builder> builderConsumer)
For instance, the following example creates a nested route with a "/user" path predicate, so that GET requests for "/user" will list users, and POST request for "/user" will create a new user.
RouterFunction<ServerResponse> nestedRoute =
RouterFunctions.route()
.nest(RequestPredicates.path("/user"), builder ->
builder.GET(this::listUsers)
.POST(this::createUser))
.build();
predicate - the predicate to testbuilderConsumer - consumer for a Builder that provides the nested router
functionRequestPredicatesRouterFunctions.Builder path(String pattern, Supplier<RouterFunction<ServerResponse>> routerFunctionSupplier)
For instance, the following example creates a nested route with a "/user" path
predicate that delegates to the router function defined in userController,
and with a "/order" path that delegates to orderController.
RouterFunction<ServerResponse> nestedRoute =
RouterFunctions.route()
.path("/user", userController::routerFunction)
.path("/order", orderController::routerFunction)
.build();
pattern - the pattern to match torouterFunctionSupplier - supplier for the nested router function to delegate to if
the pattern matchesRouterFunctions.Builder path(String pattern, Consumer<RouterFunctions.Builder> builderConsumer)
For instance, the following example creates a nested route with a "/user" path predicate, so that GET requests for "/user" will list users, and POST request for "/user" will create a new user.
RouterFunction<ServerResponse> nestedRoute =
RouterFunctions.route()
.path("/user", builder ->
builder.GET(this::listUsers)
.POST(this::createUser))
.build();
pattern - the pattern to match tobuilderConsumer - consumer for a Builder that provides the nested router
functionRouterFunctions.Builder filter(HandlerFilterFunction<ServerResponse,ServerResponse> filterFunction)
For instance, the following example creates a filter that returns a 401 Unauthorized response if the request does not contain the necessary authentication headers.
RouterFunction<ServerResponse> filteredRoute =
RouterFunctions.route()
.GET("/user", this::listUsers)
.filter((request, next) -> {
// check for authentication headers
if (isAuthenticated(request)) {
return next.handle(request);
}
else {
return ServerResponse.status(HttpStatus.UNAUTHORIZED).build();
}
})
.build();
filterFunction - the function to filter all routes built by this builderRouterFunctions.Builder before(Function<ServerRequest,ServerRequest> requestProcessor)
For instance, the following example creates a filter that logs the request before the handler function executes.
RouterFunction<ServerResponse> filteredRoute =
RouterFunctions.route()
.GET("/user", this::listUsers)
.before(request -> {
log(request);
return request;
})
.build();
requestProcessor - a function that transforms the requestRouterFunctions.Builder after(BiFunction<ServerRequest,ServerResponse,ServerResponse> responseProcessor)
For instance, the following example creates a filter that logs the response after the handler function executes.
RouterFunction<ServerResponse> filteredRoute =
RouterFunctions.route()
.GET("/user", this::listUsers)
.after((request, response) -> {
log(response);
return response;
})
.build();
responseProcessor - a function that transforms the responseRouterFunctions.Builder onError(Predicate<? super Throwable> predicate, BiFunction<? super Throwable,ServerRequest,reactor.core.publisher.Mono<ServerResponse>> responseProvider)
For instance, the following example creates a filter that returns a 500 response
status when an IllegalStateException occurs.
RouterFunction<ServerResponse> filteredRoute =
RouterFunctions.route()
.GET("/user", this::listUsers)
.onError(e -> e instanceof IllegalStateException,
(e, request) -> ServerResponse.status(HttpStatus.INTERNAL_SERVER_ERROR).build())
.build();
predicate - the type of exception to filterresponseProvider - a function that creates a response<T extends Throwable> RouterFunctions.Builder onError(Class<T> exceptionType, BiFunction<? super T,ServerRequest,reactor.core.publisher.Mono<ServerResponse>> responseProvider)
For instance, the following example creates a filter that returns a 500 response
status when an IllegalStateException occurs.
RouterFunction<ServerResponse> filteredRoute =
RouterFunctions.route()
.GET("/user", this::listUsers)
.onError(IllegalStateException.class,
(e, request) -> ServerResponse.status(HttpStatus.INTERNAL_SERVER_ERROR).build())
.build();
exceptionType - the type of exception to filterresponseProvider - a function that creates a responseRouterFunction<ServerResponse> build()
RouterFunction. All created routes are
composed with one another, and filters
(if any) are applied to the result.