Package io.vertx.ext.web
Interface Route
-
public interface Route
A route is a holder for a set of criteria which determine whether an HTTP request or failure should be routed to a handler.- Author:
- Tim Fox
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description Route
blockingHandler(Handler<RoutingContext> requestHandler)
LikeblockingHandler(Handler, boolean)
called with ordered = trueRoute
blockingHandler(Handler<RoutingContext> requestHandler, boolean ordered)
Specify a blocking request handler for the route.Route
consumes(String contentType)
Add a content type consumed by this route.Route
disable()
Disable this route.Route
enable()
Enable this route.Route
failureHandler(Handler<RoutingContext> failureHandler)
Append a failure handler to the route failure handlers list.default <T> T
getMetadata(String key)
Get some data from metadata.String
getName()
String
getPath()
Router
getSubRouter()
Route
handler(Handler<RoutingContext> requestHandler)
Append a request handler to the route handlers list.boolean
isExactPath()
Returns true of the path doesn't end with a wildcard*
or isnull
.boolean
isRegexPath()
Returns true of the path is a regular expression, this includes expression paths.Route
last()
Specify this is the last route for the router.Map<String,Object>
metadata()
Route
method(HttpMethod method)
Add an HTTP method for this route.Set<HttpMethod>
methods()
Route
order(int order)
Specify the order for this route.Route
path(String path)
Set the path prefix for this route.Route
pathRegex(String path)
Set the path prefix as a regular expression.Route
produces(String contentType)
Add a content type produced by this route.Route
putMetadata(String key, Object value)
Put metadata to this route.Route
remove()
Remove this route from the routerdefault <T> Route
respond(java.util.function.Function<RoutingContext,Future<T>> function)
Append a function request handler to the route handlers list.Route
setName(String name)
Giving a name to a route will provide this name as metadata to requests matching this route.Route
setRegexGroupsNames(List<String> groups)
When you add a new route with a regular expression, you can add named capture groups for parameters.Route
subRouter(Router subRouter)
Use a (sub)Router
as a handler.Route
useNormalizedPath(boolean useNormalizedPath)
If true then the normalized request path will be used when routing (e.g.Route
virtualHost(String hostnamePattern)
Add a virtual host filter for this route.
-
-
-
Method Detail
-
putMetadata
Route putMetadata(String key, Object value)
Put metadata to this route. Used for saved extra data. Remove the existing value if value is null.- Parameters:
key
- the metadata of keyvalue
- the metadata of value- Returns:
- a reference to this, so the API can be used fluently
-
method
Route method(HttpMethod method)
Add an HTTP method for this route. By default a route will match all HTTP methods. If any are specified then the route will only match any of the specified methods- Parameters:
method
- the HTTP method to add- Returns:
- a reference to this, so the API can be used fluently
-
path
Route path(String path)
Set the path prefix for this route. If set then this route will only match request URI paths which start with this path prefix. Only a single path or path regex can be set for a route.- Parameters:
path
- the path prefix- Returns:
- a reference to this, so the API can be used fluently
-
pathRegex
Route pathRegex(String path)
Set the path prefix as a regular expression. If set then this route will only match request URI paths, the beginning of which match the regex. Only a single path or path regex can be set for a route.- Parameters:
path
- the path regex- Returns:
- a reference to this, so the API can be used fluently
-
produces
Route produces(String contentType)
Add a content type produced by this route. Used for content based routing.- Parameters:
contentType
- the content type- Returns:
- a reference to this, so the API can be used fluently
-
consumes
Route consumes(String contentType)
Add a content type consumed by this route. Used for content based routing.- Parameters:
contentType
- the content type- Returns:
- a reference to this, so the API can be used fluently
-
virtualHost
Route virtualHost(String hostnamePattern)
Add a virtual host filter for this route.- Parameters:
hostnamePattern
- the hostname pattern that should matchHost
header of the requests- Returns:
- a reference to this, so the API can be used fluently
-
order
Route order(int order)
Specify the order for this route. The router tests routes in that order.- Parameters:
order
- the order- Returns:
- a reference to this, so the API can be used fluently
-
last
Route last()
Specify this is the last route for the router.- Returns:
- a reference to this, so the API can be used fluently
-
handler
Route handler(Handler<RoutingContext> requestHandler)
Append a request handler to the route handlers list. The router routes requests to handlers depending on whether the various criteria such as method, path, etc match. When method, path, etc are the same for different routes, You should add multiple handlers to the same route object rather than creating two different routes objects with one handler for route- Parameters:
requestHandler
- the request handler- Returns:
- a reference to this, so the API can be used fluently
-
blockingHandler
Route blockingHandler(Handler<RoutingContext> requestHandler)
LikeblockingHandler(Handler, boolean)
called with ordered = true
-
subRouter
Route subRouter(Router subRouter)
Use a (sub)Router
as a handler. There are several requirements to be fulfilled for this to be accepted.- The route path must end with a wild card
- Parameters are allowed but full regex patterns not
- No other handler can be registered before or after this call (but they can on a new route object for the same path)
- Only 1 router per path object
- Parameters:
subRouter
- the router to add- Returns:
- a reference to this, so the API can be used fluently
-
getSubRouter
Router getSubRouter()
- Returns:
- the sub router if this route acts as a sub router,
null
if it does not.
-
blockingHandler
Route blockingHandler(Handler<RoutingContext> requestHandler, boolean ordered)
Specify a blocking request handler for the route. This method works just likehandler(Handler)
excepted that it will run the blocking handler on a worker thread so that it won't block the event loop. Note that it's safe to call context.next() from the blocking handler as it will be executed on the event loop context (and not on the worker thread.If the blocking handler is ordered it means that any blocking handlers for the same context are never executed concurrently but always in the order they were called. The default value of ordered is true. If you do not want this behaviour and don't mind if your blocking handlers are executed in parallel you can set ordered to false.
- Parameters:
requestHandler
- the blocking request handlerordered
- if true handlers are executed in sequence, otherwise are run in parallel- Returns:
- a reference to this, so the API can be used fluently
-
failureHandler
Route failureHandler(Handler<RoutingContext> failureHandler)
Append a failure handler to the route failure handlers list. The router routes failures to failurehandlers depending on whether the various criteria such as method, path, etc match. When method, path, etc are the same for different routes, You should add multiple failure handlers to the same route object rather than creating two different routes objects with one failure handler for route- Parameters:
failureHandler
- the request handler- Returns:
- a reference to this, so the API can be used fluently
-
remove
Route remove()
Remove this route from the router- Returns:
- a reference to this, so the API can be used fluently
-
disable
Route disable()
Disable this route. While disabled the router will not route any requests or failures to it.- Returns:
- a reference to this, so the API can be used fluently
-
enable
Route enable()
Enable this route.- Returns:
- a reference to this, so the API can be used fluently
-
useNormalizedPath
Route useNormalizedPath(boolean useNormalizedPath)
If true then the normalized request path will be used when routing (e.g. removing duplicate /) Default is true- Parameters:
useNormalizedPath
- use normalized path for routing?- Returns:
- a reference to this, so the API can be used fluently
-
getMetadata
default <T> T getMetadata(String key)
Get some data from metadata.- Type Parameters:
T
- the type of the data- Parameters:
key
- the key for the metadata- Returns:
- the data
-
getPath
String getPath()
- Returns:
- the path prefix (if any) for this route
-
isRegexPath
boolean isRegexPath()
Returns true of the path is a regular expression, this includes expression paths.- Returns:
- true if backed by a pattern.
-
isExactPath
boolean isExactPath()
Returns true of the path doesn't end with a wildcard*
or isnull
. Regular expression paths are always assumed to be exact.- Returns:
- true if the path is exact.
-
methods
Set<HttpMethod> methods()
- Returns:
- the http methods accepted by this route
-
setRegexGroupsNames
Route setRegexGroupsNames(List<String> groups)
When you add a new route with a regular expression, you can add named capture groups for parameters.
However, if you need more complex parameters names (like "param_name"), you can add parameters names with this function. You have to name capture groups in regex with names: "p0", "p1", "p2", ...
For example: If you declare route with regex \/(?[a-z]*)\/(? [a-z]*) and group names ["param_a", "param-b"] for uri /hello/world you receive inside pathParams() the parameter param_a = "hello" - Parameters:
groups
- group names- Returns:
- a reference to this, so the API can be used fluently
-
setName
Route setName(String name)
Giving a name to a route will provide this name as metadata to requests matching this route. This metadata is used by metrics and is meant to group requests with different URI paths (due to parameters) by a common identifier, for example "/resource/:resourceID" common name- Parameters:
name
- The name of the route.- Returns:
- a reference to this, so the API can be used fluently
-
getName
String getName()
- Returns:
- the name of the route. If not given explicitly, the path or the pattern or null is returned (in that order)
-
respond
default <T> Route respond(java.util.function.Function<RoutingContext,Future<T>> function)
Append a function request handler to the route handlers list. The function expects to receive the routing context and users are expected to return aFuture
. The use of this functional interface allows users to quickly link the responses from other vert.x APIs or clients directly to a handler. If the context response has been ended, for example,RoutingContext.end()
has been called, then nothing shall happen. For the remaining cases, the following rules apply:- When
body
isnull
then the status code of the response shall be 204 (NO CONTENT) - When
body
is of typeBuffer
and theContent-Type
isn't set then theContent-Type
shall beapplication/octet-stream
- When
body
is of typeString
and theContent-Type
isn't set then theContent-Type
shall betext/html
- Otherwise the response of the future is then passed to the method
RoutingContext.json(Object)
to perform a JSON serialization of the result
- Type Parameters:
T
- a generic type to allow type safe API- Parameters:
function
- the request handler function- Returns:
- a reference to this, so the API can be used fluently
- When
-
-