Interface RouterFunctions.Builder
- Enclosing class:
- RouterFunctions
RouterFunctions.route()
.-
Method Summary
Modifier and TypeMethodDescriptionadd
(RouterFunction<ServerResponse> routerFunction) Adds the given route to this builder.after
(BiFunction<ServerRequest, ServerResponse, ServerResponse> responseProcessor) Filter the response object for all routes created by this builder with the given response processing function.before
(Function<ServerRequest, ServerRequest> requestProcessor) Filter the request object for all routes created by this builder with the given request processing function.build()
Builds theRouterFunction
.DELETE
(String pattern, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPDELETE
requests that match the given pattern.DELETE
(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPDELETE
requests that match the given pattern and predicate.DELETE
(HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles HTTPDELETE
requests.DELETE
(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPDELETE
requests that match the given predicate.filter
(HandlerFilterFunction<ServerResponse, ServerResponse> filterFunction) Filters all routes created by this builder with the given filter function.GET
(String pattern, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPGET
requests that match the given pattern.GET
(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPGET
requests that match the given pattern and predicate.GET
(HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles HTTPGET
requests.GET
(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPGET
requests that match the given predicate.HEAD
(String pattern, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPHEAD
requests that match the given pattern.HEAD
(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPHEAD
requests that match the given pattern and predicate.HEAD
(HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles HTTPHEAD
requests.HEAD
(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPHEAD
requests that match the given predicate.nest
(RequestPredicate predicate, Consumer<RouterFunctions.Builder> builderConsumer) Route to a built router function if the given request predicate applies.nest
(RequestPredicate predicate, Supplier<RouterFunction<ServerResponse>> routerFunctionSupplier) Route to the supplied router function if the given request predicate applies.onError
(Class<? extends Throwable> exceptionType, BiFunction<Throwable, ServerRequest, ServerResponse> responseProvider) Filters all exceptions of the given type by applying the given response provider function.onError
(Predicate<Throwable> predicate, BiFunction<Throwable, ServerRequest, ServerResponse> responseProvider) Filters all exceptions that match the predicate by applying the given response provider function.OPTIONS
(String pattern, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPOPTIONS
requests that match the given pattern.OPTIONS
(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPOPTIONS
requests that match the given pattern and predicate.OPTIONS
(HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles HTTPOPTIONS
requests.OPTIONS
(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPOPTIONS
requests that match the given predicate.PATCH
(String pattern, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPATCH
requests that match the given pattern.PATCH
(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPATCH
requests that match the given pattern and predicate.PATCH
(HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles HTTPPATCH
requests.PATCH
(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPATCH
requests that match the given predicate.path
(String pattern, Consumer<RouterFunctions.Builder> builderConsumer) Route to a built router function if the given path prefix pattern applies.path
(String pattern, Supplier<RouterFunction<ServerResponse>> routerFunctionSupplier) Route to the supplied router function if the given path prefix pattern applies.POST
(String pattern, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPOST
requests that match the given pattern.POST
(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPOST
requests that match the given pattern and predicate.POST
(HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles HTTPPOST
requests.POST
(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPOST
requests that match the given predicate.PUT
(String pattern, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPUT
requests that match the given pattern.PUT
(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPUT
requests that match the given pattern and predicate.PUT
(HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles HTTPPUT
requests.PUT
(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPUT
requests that match the given predicate.Route requests that match the given pattern to resources relative to the given root location.resources
(Function<ServerRequest, Optional<Resource>> lookupFunction) Route to resources using the provided lookup function.route
(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all requests that match the given predicate.withAttribute
(String name, Object value) Add an attribute with the given name and value to the last route built with this builder.withAttributes
(Consumer<Map<String, Object>> attributesConsumer) Manipulate the attributes of the last route built with the given consumer.
-
Method Details
-
GET
Adds a route to the given handler function that handles HTTPGET
requests.- Parameters:
handlerFunction
- the handler function to handle allGET
requests- Returns:
- this builder
- Since:
- 5.3
-
GET
Adds a route to the given handler function that handles all HTTPGET
requests that match the given pattern.- Parameters:
pattern
- the pattern to match tohandlerFunction
- the handler function to handle allGET
requests that matchpattern
- Returns:
- this builder
-
GET
RouterFunctions.Builder GET(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPGET
requests that match the given predicate.- Parameters:
predicate
- predicate to matchhandlerFunction
- the handler function to handle allGET
requests that matchpredicate
- Returns:
- this builder
- Since:
- 5.3
- See Also:
-
GET
RouterFunctions.Builder GET(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPGET
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 inuserController
:RouterFunction<ServerResponse> route = RouterFunctions.route() .GET("/user", RequestPredicates.accept(MediaType.APPLICATION_JSON), userController::listUsers) .build();
- Parameters:
pattern
- the pattern to match topredicate
- additional predicate to matchhandlerFunction
- the handler function to handle allGET
requests that matchpattern
and the predicate- Returns:
- this builder
- See Also:
-
HEAD
Adds a route to the given handler function that handles HTTPHEAD
requests.- Parameters:
handlerFunction
- the handler function to handle allHEAD
requests- Returns:
- this builder
- Since:
- 5.3
-
HEAD
Adds a route to the given handler function that handles all HTTPHEAD
requests that match the given pattern.- Parameters:
pattern
- the pattern to match tohandlerFunction
- the handler function to handle allHEAD
requests that matchpattern
- Returns:
- this builder
-
HEAD
RouterFunctions.Builder HEAD(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPHEAD
requests that match the given predicate.- Parameters:
predicate
- predicate to matchhandlerFunction
- the handler function to handle allHEAD
requests that matchpredicate
- Returns:
- this builder
- Since:
- 5.3
- See Also:
-
HEAD
RouterFunctions.Builder HEAD(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPHEAD
requests that match the given pattern and predicate.- Parameters:
pattern
- the pattern to match topredicate
- additional predicate to matchhandlerFunction
- the handler function to handle allHEAD
requests that matchpattern
- Returns:
- this builder
-
POST
Adds a route to the given handler function that handles HTTPPOST
requests.- Parameters:
handlerFunction
- the handler function to handle allPOST
requests- Returns:
- this builder
- Since:
- 5.3
-
POST
Adds a route to the given handler function that handles all HTTPPOST
requests that match the given pattern.- Parameters:
pattern
- the pattern to match tohandlerFunction
- the handler function to handle allPOST
requests that matchpattern
- Returns:
- this builder
-
POST
RouterFunctions.Builder POST(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPOST
requests that match the given predicate.- Parameters:
predicate
- predicate to matchhandlerFunction
- the handler function to handle allPOST
requests that matchpredicate
- Returns:
- this builder
- Since:
- 5.3
- See Also:
-
POST
RouterFunctions.Builder POST(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPOST
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 inuserController
:RouterFunction<ServerResponse> route = RouterFunctions.route() .POST("/user", RequestPredicates.contentType(MediaType.APPLICATION_JSON), userController::addUser) .build();
- Parameters:
pattern
- the pattern to match topredicate
- additional predicate to matchhandlerFunction
- the handler function to handle allPOST
requests that matchpattern
- Returns:
- this builder
-
PUT
Adds a route to the given handler function that handles HTTPPUT
requests.- Parameters:
handlerFunction
- the handler function to handle allPUT
requests- Returns:
- this builder
- Since:
- 5.3
-
PUT
Adds a route to the given handler function that handles all HTTPPUT
requests that match the given pattern.- Parameters:
pattern
- the pattern to match tohandlerFunction
- the handler function to handle allPUT
requests that matchpattern
- Returns:
- this builder
-
PUT
RouterFunctions.Builder PUT(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPUT
requests that match the given predicate.- Parameters:
predicate
- predicate to matchhandlerFunction
- the handler function to handle allPUT
requests that matchpredicate
- Returns:
- this builder
- Since:
- 5.3
- See Also:
-
PUT
RouterFunctions.Builder PUT(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPUT
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 inuserController
:RouterFunction<ServerResponse> route = RouterFunctions.route() .PUT("/user", RequestPredicates.contentType(MediaType.APPLICATION_JSON), userController::editUser) .build();
- Parameters:
pattern
- the pattern to match topredicate
- additional predicate to matchhandlerFunction
- the handler function to handle allPUT
requests that matchpattern
- Returns:
- this builder
-
PATCH
Adds a route to the given handler function that handles HTTPPATCH
requests.- Parameters:
handlerFunction
- the handler function to handle allPATCH
requests- Returns:
- this builder
- Since:
- 5.3
-
PATCH
Adds a route to the given handler function that handles all HTTPPATCH
requests that match the given pattern.- Parameters:
pattern
- the pattern to match tohandlerFunction
- the handler function to handle allPATCH
requests that matchpattern
- Returns:
- this builder
-
PATCH
RouterFunctions.Builder PATCH(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPATCH
requests that match the given predicate.- Parameters:
predicate
- predicate to matchhandlerFunction
- the handler function to handle allPATCH
requests that matchpredicate
- Returns:
- this builder
- Since:
- 5.3
- See Also:
-
PATCH
RouterFunctions.Builder PATCH(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPPATCH
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 inuserController
:RouterFunction<ServerResponse> route = RouterFunctions.route() .PATCH("/user", RequestPredicates.contentType(MediaType.APPLICATION_JSON), userController::editUser) .build();
- Parameters:
pattern
- the pattern to match topredicate
- additional predicate to matchhandlerFunction
- the handler function to handle allPATCH
requests that matchpattern
- Returns:
- this builder
-
DELETE
Adds a route to the given handler function that handles HTTPDELETE
requests.- Parameters:
handlerFunction
- the handler function to handle allDELETE
requests- Returns:
- this builder
- Since:
- 5.3
-
DELETE
Adds a route to the given handler function that handles all HTTPDELETE
requests that match the given pattern.- Parameters:
pattern
- the pattern to match tohandlerFunction
- the handler function to handle allDELETE
requests that matchpattern
- Returns:
- this builder
-
DELETE
RouterFunctions.Builder DELETE(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPDELETE
requests that match the given predicate.- Parameters:
predicate
- predicate to matchhandlerFunction
- the handler function to handle allDELETE
requests that matchpredicate
- Returns:
- this builder
- Since:
- 5.3
- See Also:
-
DELETE
RouterFunctions.Builder DELETE(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPDELETE
requests that match the given pattern and predicate.- Parameters:
pattern
- the pattern to match topredicate
- additional predicate to matchhandlerFunction
- the handler function to handle allDELETE
requests that matchpattern
- Returns:
- this builder
-
OPTIONS
Adds a route to the given handler function that handles HTTPOPTIONS
requests.- Parameters:
handlerFunction
- the handler function to handle allOPTIONS
requests- Returns:
- this builder
- Since:
- 5.3
-
OPTIONS
Adds a route to the given handler function that handles all HTTPOPTIONS
requests that match the given pattern.- Parameters:
pattern
- the pattern to match tohandlerFunction
- the handler function to handle allOPTIONS
requests that matchpattern
- Returns:
- this builder
-
OPTIONS
RouterFunctions.Builder OPTIONS(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPOPTIONS
requests that match the given predicate.- Parameters:
predicate
- predicate to matchhandlerFunction
- the handler function to handle allOPTIONS
requests that matchpredicate
- Returns:
- this builder
- Since:
- 5.3
- See Also:
-
OPTIONS
RouterFunctions.Builder OPTIONS(String pattern, RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all HTTPOPTIONS
requests that match the given pattern and predicate.- Parameters:
pattern
- the pattern to match topredicate
- additional predicate to matchhandlerFunction
- the handler function to handle allOPTIONS
requests that matchpattern
- Returns:
- this builder
-
route
RouterFunctions.Builder route(RequestPredicate predicate, HandlerFunction<ServerResponse> handlerFunction) Adds a route to the given handler function that handles all requests that match the given predicate.- Parameters:
predicate
- the request predicate to matchhandlerFunction
- the handler function to handle all requests that match the predicate- Returns:
- this builder
- See Also:
-
add
Adds the given route to this builder. Can be used to merge externally defined router functions into this builder, or can be combined withRouterFunctions.route(RequestPredicate, HandlerFunction)
to allow for more flexible predicate matching.For instance, the following example adds the router function returned from
OrderController.routerFunction()
. to thechangeUser
method inuserController
:RouterFunction<ServerResponse> route = RouterFunctions.route() .GET("/users", userController::listUsers) .add(orderController.routerFunction()); .build();
- Parameters:
routerFunction
- the router function to be added- Returns:
- this builder
- See Also:
-
resources
Route requests that match the given pattern to resources relative to the given root location. For instanceResource location = new FileSystemResource("public-resources/"); RouterFunction<ServerResponse> resources = RouterFunctions.resources("/resources/**", location);
- Parameters:
pattern
- the pattern to matchlocation
- the location directory relative to which resources should be resolved- Returns:
- this builder
-
resources
Route to resources using the provided lookup function. If the lookup function provides aResource
for the given request, it will be it will be exposed using aHandlerFunction
that handles GET, HEAD, and OPTIONS requests.- Parameters:
lookupFunction
- the function to provide aResource
given theServerRequest
- Returns:
- this builder
-
nest
RouterFunctions.Builder nest(RequestPredicate predicate, Supplier<RouterFunction<ServerResponse>> routerFunctionSupplier) Route to the supplied router function if the given request predicate applies. This method can be used to create nested routes, where a group of routes share a common path (prefix), header, or other request predicate.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();
- Parameters:
predicate
- the predicate to testrouterFunctionSupplier
- supplier for the nested router function to delegate to if the predicate applies- Returns:
- this builder
- See Also:
-
nest
RouterFunctions.Builder nest(RequestPredicate predicate, Consumer<RouterFunctions.Builder> builderConsumer) Route to a built router function if the given request predicate applies. This method can be used to create nested routes, where a group of routes share a common path (prefix), header, or other request predicate.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();
- Parameters:
predicate
- the predicate to testbuilderConsumer
- consumer for aBuilder
that provides the nested router function- Returns:
- this builder
- See Also:
-
path
RouterFunctions.Builder path(String pattern, Supplier<RouterFunction<ServerResponse>> routerFunctionSupplier) Route to the supplied router function if the given path prefix pattern applies. This method can be used to create nested routes, where a group of routes share a common path prefix. Specifically, this method can be used to merge externally defined router functions under a path prefix.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 toorderController
.RouterFunction<ServerResponse> nestedRoute = RouterFunctions.route() .path("/user", userController::routerFunction) .path("/order", orderController::routerFunction) .build();
- Parameters:
pattern
- the pattern to match torouterFunctionSupplier
- supplier for the nested router function to delegate to if the pattern matches- Returns:
- this builder
-
path
Route to a built router function if the given path prefix pattern applies. This method can be used to create nested routes, where a group of routes share a common path prefix.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();
- Parameters:
pattern
- the pattern to match tobuilderConsumer
- consumer for aBuilder
that provides the nested router function- Returns:
- this builder
-
filter
Filters all routes created by this builder with the given filter function. Filter functions are typically used to address cross-cutting concerns, such as logging, security, etc.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();
- Parameters:
filterFunction
- the function to filter all routes built by this builder- Returns:
- this builder
-
before
Filter the request object for all routes created by this builder with the given request processing function. Filters are typically used to address cross-cutting concerns, such as logging, security, etc.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();
- Parameters:
requestProcessor
- a function that transforms the request- Returns:
- this builder
-
after
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. Filters are typically used to address cross-cutting concerns, such as logging, security, etc.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();
- Parameters:
responseProcessor
- a function that transforms the response- Returns:
- this builder
-
onError
RouterFunctions.Builder onError(Predicate<Throwable> predicate, BiFunction<Throwable, ServerRequest, ServerResponse> responseProvider) Filters all exceptions that match the predicate by applying the given response provider function.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();
- Parameters:
predicate
- the type of exception to filterresponseProvider
- a function that creates a response- Returns:
- this builder
-
onError
RouterFunctions.Builder onError(Class<? extends Throwable> exceptionType, BiFunction<Throwable, ServerRequest, ServerResponse> responseProvider) Filters all exceptions of the given type by applying the given response provider function.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();
- Parameters:
exceptionType
- the type of exception to filterresponseProvider
- a function that creates a response- Returns:
- this builder
-
withAttribute
Add an attribute with the given name and value to the last route built with this builder.- Parameters:
name
- the attribute namevalue
- the attribute value- Returns:
- this builder
- Since:
- 5.3
-
withAttributes
Manipulate the attributes of the last route built with the given consumer.The map provided to the consumer is "live", so that the consumer can be used to overwrite existing attributes, remove attributes, or use any of the other
Map
methods.- Parameters:
attributesConsumer
- a function that consumes the attributes map- Returns:
- this builder
- Since:
- 5.3
-
build
RouterFunction<ServerResponse> build()Builds theRouterFunction
. All created routes are composed with one another, and filters (if any) are applied to the result.- Returns:
- the built router function
-