Package io.vertx.ext.web

## Interface Router

- All Superinterfaces:
    `Handler<HttpServerRequest>`

      public interface Router
      extends Handler<HttpServerRequest>

  A router receives request from an `HttpServer` and routes it to the first matching `Route` that it contains. A router can contain many routes.

  Routers are also used for routing failures.

  Author:
    Tim Fox

- - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Router` | `allowForward​(AllowForwardHeaders allowForwardHeaders)` | Set whether the router should parse "forwarded"-type headers
    `Router` | `clear()` | Remove all the routes from this router
    `Route` | `connect()` | Add a route that matches any HTTP CONNECT request
    `Route` | `connect​(String path)` | Add a route that matches a HTTP CONNECT request and the specified path
    `Route` | `connectWithRegex​(String regex)` | Add a route that matches a HTTP CONNECT request and the specified path regex
    `Route` | `delete()` | Add a route that matches any HTTP DELETE request
    `Route` | `delete​(String path)` | Add a route that matches a HTTP DELETE request and the specified path
    `Route` | `deleteWithRegex​(String regex)` | Add a route that matches a HTTP DELETE request and the specified path regex
    `Router` | `errorHandler​(int statusCode, Handler<RoutingContext> errorHandler)` | Specify an handler to handle an error for a particular status code.
    `Route` | `get()` | Add a route that matches any HTTP GET request
    `Route` | `get​(String path)` | Add a route that matches a HTTP GET request and the specified path
    `default <T> T` | `getMetadata​(String key)` | Get some data from metadata.
    `List<Route>` | `getRoutes()` |
    `Route` | `getWithRegex​(String regex)` | Add a route that matches a HTTP GET request and the specified path regex
    `void` | `handleContext​(RoutingContext context)` | Used to route a context to the router.
    `void` | `handleFailure​(RoutingContext context)` | Used to route a failure to the router.
    `Route` | `head()` | Add a route that matches any HTTP HEAD request
    `Route` | `head​(String path)` | Add a route that matches a HTTP HEAD request and the specified path
    `Route` | `headWithRegex​(String regex)` | Add a route that matches a HTTP HEAD request and the specified path regex
    `Map<String,​Object>` | `metadata()` |
    `Router` | `modifiedHandler​(Handler<Router> handler)` | When a Router routes are changed this handler is notified.
    `Route` | `options()` | Add a route that matches any HTTP OPTIONS request
    `Route` | `options​(String path)` | Add a route that matches a HTTP OPTIONS request and the specified path
    `Route` | `optionsWithRegex​(String regex)` | Add a route that matches a HTTP OPTIONS request and the specified path regex
    `Route` | `patch()` | Add a route that matches any HTTP PATCH request
    `Route` | `patch​(String path)` | Add a route that matches a HTTP PATCH request and the specified path
    `Route` | `patchWithRegex​(String regex)` | Add a route that matches a HTTP PATCH request and the specified path regex
    `Route` | `post()` | Add a route that matches any HTTP POST request
    `Route` | `post​(String path)` | Add a route that matches a HTTP POST request and the specified path
    `Route` | `postWithRegex​(String regex)` | Add a route that matches a HTTP POST request and the specified path regex
    `Route` | `put()` | Add a route that matches any HTTP PUT request
    `Route` | `put​(String path)` | Add a route that matches a HTTP PUT request and the specified path
    `Router` | `putMetadata​(String key, Object value)` | Put metadata to this router.
    `Route` | `putWithRegex​(String regex)` | Add a route that matches a HTTP PUT request and the specified path regex
    `Route` | `route()` | Add a route with no matching criteria, i.e.
    `Route` | `route​(HttpMethod method, String path)` | Add a route that matches the specified HTTP method and path
    `Route` | `route​(String path)` | Add a route that matches the specified path
    `static Router` | `router​(Vertx vertx)` | Create a router
    `Route` | `routeWithRegex​(HttpMethod method, String regex)` | Add a route that matches the specified HTTP method and path regex
    `Route` | `routeWithRegex​(String regex)` | Add a route that matches the specified path regex
    `Route` | `trace()` | Add a route that matches any HTTP TRACE request
    `Route` | `trace​(String path)` | Add a route that matches a HTTP TRACE request and the specified path
    `Route` | `traceWithRegex​(String regex)` | Add a route that matches a HTTP TRACE request and the specified path regex

    - ### Methods inherited from interface io.vertx.core.Handler

      `handle`

- - ### Method Detail

    - #### putMetadata

          Router putMetadata​(String key,
                             Object value)

      Put metadata to this router. Used for saved extra data. Remove the existing value if value is null.
      Parameters:
        `key` - the metadata of key
        `value` - the metadata of value
      Returns:
        a reference to this, so the API can be used fluently

    - #### metadata

          Map<String,​Object> metadata()

      Returns:
        the metadata of this router, never returns null.

    - #### 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

    - #### router

          static Router router​(Vertx vertx)

      Create a router
      Parameters:
        `vertx` - the Vert.x instance
      Returns:
        the router

    - #### route

          Route route()

      Add a route with no matching criteria, i.e. it matches all requests or failures.
      Returns:
        the route

    - #### route

          Route route​(HttpMethod method,
                      String path)

      Add a route that matches the specified HTTP method and path
      Parameters:
        `method` - the HTTP method to match
        `path` - URI paths that begin with this path will match
      Returns:
        the route

    - #### route

          Route route​(String path)

      Add a route that matches the specified path
      Parameters:
        `path` - URI paths that begin with this path will match
      Returns:
        the route

    - #### routeWithRegex

          Route routeWithRegex​(HttpMethod method,
                               String regex)

      Add a route that matches the specified HTTP method and path regex
      Parameters:
        `method` - the HTTP method to match
        `regex` - URI paths that begin with a match for this regex will match
      Returns:
        the route

    - #### routeWithRegex

          Route routeWithRegex​(String regex)

      Add a route that matches the specified path regex
      Parameters:
        `regex` - URI paths that begin with a match for this regex will match
      Returns:
        the route

    - #### get

          Route get()

      Add a route that matches any HTTP GET request
      Returns:
        the route

    - #### get

          Route get​(String path)

      Add a route that matches a HTTP GET request and the specified path
      Parameters:
        `path` - URI paths that begin with this path will match
      Returns:
        the route

    - #### getWithRegex

          Route getWithRegex​(String regex)

      Add a route that matches a HTTP GET request and the specified path regex
      Parameters:
        `regex` - URI paths that begin with a match for this regex will match
      Returns:
        the route

    - #### head

          Route head()

      Add a route that matches any HTTP HEAD request
      Returns:
        the route

    - #### head

          Route head​(String path)

      Add a route that matches a HTTP HEAD request and the specified path
      Parameters:
        `path` - URI paths that begin with this path will match
      Returns:
        the route

    - #### headWithRegex

          Route headWithRegex​(String regex)

      Add a route that matches a HTTP HEAD request and the specified path regex
      Parameters:
        `regex` - URI paths that begin with a match for this regex will match
      Returns:
        the route

    - #### options

          Route options()

      Add a route that matches any HTTP OPTIONS request
      Returns:
        the route

    - #### options

          Route options​(String path)

      Add a route that matches a HTTP OPTIONS request and the specified path
      Parameters:
        `path` - URI paths that begin with this path will match
      Returns:
        the route

    - #### optionsWithRegex

          Route optionsWithRegex​(String regex)

      Add a route that matches a HTTP OPTIONS request and the specified path regex
      Parameters:
        `regex` - URI paths that begin with a match for this regex will match
      Returns:
        the route

    - #### put

          Route put()

      Add a route that matches any HTTP PUT request
      Returns:
        the route

    - #### put

          Route put​(String path)

      Add a route that matches a HTTP PUT request and the specified path
      Parameters:
        `path` - URI paths that begin with this path will match
      Returns:
        the route

    - #### putWithRegex

          Route putWithRegex​(String regex)

      Add a route that matches a HTTP PUT request and the specified path regex
      Parameters:
        `regex` - URI paths that begin with a match for this regex will match
      Returns:
        the route

    - #### post

          Route post()

      Add a route that matches any HTTP POST request
      Returns:
        the route

    - #### post

          Route post​(String path)

      Add a route that matches a HTTP POST request and the specified path
      Parameters:
        `path` - URI paths that begin with this path will match
      Returns:
        the route

    - #### postWithRegex

          Route postWithRegex​(String regex)

      Add a route that matches a HTTP POST request and the specified path regex
      Parameters:
        `regex` - URI paths that begin with a match for this regex will match
      Returns:
        the route

    - #### delete

          Route delete()

      Add a route that matches any HTTP DELETE request
      Returns:
        the route

    - #### delete

          Route delete​(String path)

      Add a route that matches a HTTP DELETE request and the specified path
      Parameters:
        `path` - URI paths that begin with this path will match
      Returns:
        the route

    - #### deleteWithRegex

          Route deleteWithRegex​(String regex)

      Add a route that matches a HTTP DELETE request and the specified path regex
      Parameters:
        `regex` - URI paths that begin with a match for this regex will match
      Returns:
        the route

    - #### trace

          Route trace()

      Add a route that matches any HTTP TRACE request
      Returns:
        the route

    - #### trace

          Route trace​(String path)

      Add a route that matches a HTTP TRACE request and the specified path
      Parameters:
        `path` - URI paths that begin with this path will match
      Returns:
        the route

    - #### traceWithRegex

          Route traceWithRegex​(String regex)

      Add a route that matches a HTTP TRACE request and the specified path regex
      Parameters:
        `regex` - URI paths that begin with a match for this regex will match
      Returns:
        the route

    - #### connect

          Route connect()

      Add a route that matches any HTTP CONNECT request
      Returns:
        the route

    - #### connect

          Route connect​(String path)

      Add a route that matches a HTTP CONNECT request and the specified path
      Parameters:
        `path` - URI paths that begin with this path will match
      Returns:
        the route

    - #### connectWithRegex

          Route connectWithRegex​(String regex)

      Add a route that matches a HTTP CONNECT request and the specified path regex
      Parameters:
        `regex` - URI paths that begin with a match for this regex will match
      Returns:
        the route

    - #### patch

          Route patch()

      Add a route that matches any HTTP PATCH request
      Returns:
        the route

    - #### patch

          Route patch​(String path)

      Add a route that matches a HTTP PATCH request and the specified path
      Parameters:
        `path` - URI paths that begin with this path will match
      Returns:
        the route

    - #### patchWithRegex

          Route patchWithRegex​(String regex)

      Add a route that matches a HTTP PATCH request and the specified path regex
      Parameters:
        `regex` - URI paths that begin with a match for this regex will match
      Returns:
        the route

    - #### getRoutes

          List<Route> getRoutes()

      Returns:
        a list of all the routes on this router

    - #### clear

          Router clear()

      Remove all the routes from this router
      Returns:
        a reference to this, so the API can be used fluently

    - #### errorHandler

          Router errorHandler​(int statusCode,
                              Handler<RoutingContext> errorHandler)

      Specify an handler to handle an error for a particular status code. You can use to manage general errors too using status code 500. The handler will be called when the context fails and other failure handlers didn't write the reply or when an exception is thrown inside an handler. You must not use `RoutingContext.next()` inside the error handler This does not affect the normal failure routing logic.
      Parameters:
        `statusCode` - status code the errorHandler is capable of handle
        `errorHandler` - error handler. Note: You must not use `RoutingContext.next()` inside the provided handler
      Returns:
        a reference to this, so the API can be used fluently

    - #### handleContext

          void handleContext​(RoutingContext context)

      Used to route a context to the router. Used for sub-routers. You wouldn't normally call this method directly.
      Parameters:
        `context` - the routing context

    - #### handleFailure

          void handleFailure​(RoutingContext context)

      Used to route a failure to the router. Used for sub-routers. You wouldn't normally call this method directly.
      Parameters:
        `context` - the routing context

    - #### modifiedHandler

          Router modifiedHandler​(Handler<Router> handler)

      When a Router routes are changed this handler is notified. This is useful for routes that depend on the state of the router.
      Parameters:
        `handler` - a notification handler that will receive this router as argument
      Returns:
        a reference to this, so the API can be used fluently

    - #### allowForward

          Router allowForward​(AllowForwardHeaders allowForwardHeaders)

      Set whether the router should parse "forwarded"-type headers
      Parameters:
        `allowForwardHeaders` - to enable parsing of "forwarded"-type headers
      Returns:
        a reference to this, so the API can be used fluently