pub trait RouterExt<S, B>: ExtraRouterExt<S, B> {
    // Required methods
    fn typed_get<H, T, P>(self, handler: H) -> Self
       where H: Handler<T, S, B>,
             T: SecondElementIs<P> + 'static,
             P: TypedPath;
    fn typed_delete<H, T, P>(self, handler: H) -> Self
       where H: Handler<T, S, B>,
             T: SecondElementIs<P> + 'static,
             P: TypedPath;
    fn typed_head<H, T, P>(self, handler: H) -> Self
       where H: Handler<T, S, B>,
             T: SecondElementIs<P> + 'static,
             P: TypedPath;
    fn typed_options<H, T, P>(self, handler: H) -> Self
       where H: Handler<T, S, B>,
             T: SecondElementIs<P> + 'static,
             P: TypedPath;
    fn typed_patch<H, T, P>(self, handler: H) -> Self
       where H: Handler<T, S, B>,
             T: SecondElementIs<P> + 'static,
             P: TypedPath;
    fn typed_post<H, T, P>(self, handler: H) -> Self
       where H: Handler<T, S, B>,
             T: SecondElementIs<P> + 'static,
             P: TypedPath;
    fn typed_put<H, T, P>(self, handler: H) -> Self
       where H: Handler<T, S, B>,
             T: SecondElementIs<P> + 'static,
             P: TypedPath;
    fn typed_trace<H, T, P>(self, handler: H) -> Self
       where H: Handler<T, S, B>,
             T: SecondElementIs<P> + 'static,
             P: TypedPath;
    fn route_with_tsr(
        self,
        path: &str,
        method_router: MethodRouter<S, B>
    ) -> Self
       where Self: Sized;
    fn route_service_with_tsr<T>(self, path: &str, service: T) -> Self
       where T: Service<Request<B>, Error = Infallible> + Clone + Send + 'static,
             T::Response: IntoResponse,
             T::Future: Send + 'static,
             Self: Sized;
}
Expand description

Extension trait that adds additional methods to Router.

Required Methods§

source

fn typed_get<H, T, P>(self, handler: H) -> Selfwhere H: Handler<T, S, B>, T: SecondElementIs<P> + 'static, P: TypedPath,

Add a typed GET route to the router.

The path will be inferred from the first argument to the handler function which must implement TypedPath.

See TypedPath for more details and examples.

source

fn typed_delete<H, T, P>(self, handler: H) -> Selfwhere H: Handler<T, S, B>, T: SecondElementIs<P> + 'static, P: TypedPath,

Add a typed DELETE route to the router.

The path will be inferred from the first argument to the handler function which must implement TypedPath.

See TypedPath for more details and examples.

source

fn typed_head<H, T, P>(self, handler: H) -> Selfwhere H: Handler<T, S, B>, T: SecondElementIs<P> + 'static, P: TypedPath,

Add a typed HEAD route to the router.

The path will be inferred from the first argument to the handler function which must implement TypedPath.

See TypedPath for more details and examples.

source

fn typed_options<H, T, P>(self, handler: H) -> Selfwhere H: Handler<T, S, B>, T: SecondElementIs<P> + 'static, P: TypedPath,

Add a typed OPTIONS route to the router.

The path will be inferred from the first argument to the handler function which must implement TypedPath.

See TypedPath for more details and examples.

source

fn typed_patch<H, T, P>(self, handler: H) -> Selfwhere H: Handler<T, S, B>, T: SecondElementIs<P> + 'static, P: TypedPath,

Add a typed PATCH route to the router.

The path will be inferred from the first argument to the handler function which must implement TypedPath.

See TypedPath for more details and examples.

source

fn typed_post<H, T, P>(self, handler: H) -> Selfwhere H: Handler<T, S, B>, T: SecondElementIs<P> + 'static, P: TypedPath,

Add a typed POST route to the router.

The path will be inferred from the first argument to the handler function which must implement TypedPath.

See TypedPath for more details and examples.

source

fn typed_put<H, T, P>(self, handler: H) -> Selfwhere H: Handler<T, S, B>, T: SecondElementIs<P> + 'static, P: TypedPath,

Add a typed PUT route to the router.

The path will be inferred from the first argument to the handler function which must implement TypedPath.

See TypedPath for more details and examples.

source

fn typed_trace<H, T, P>(self, handler: H) -> Selfwhere H: Handler<T, S, B>, T: SecondElementIs<P> + 'static, P: TypedPath,

Add a typed TRACE route to the router.

The path will be inferred from the first argument to the handler function which must implement TypedPath.

See TypedPath for more details and examples.

source

fn route_with_tsr(self, path: &str, method_router: MethodRouter<S, B>) -> Selfwhere Self: Sized,

Add another route to the router with an additional “trailing slash redirect” route.

If you add a route without a trailing slash, such as /foo, this method will also add a route for /foo/ that redirects to /foo.

If you add a route with a trailing slash, such as /bar/, this method will also add a route for /bar that redirects to /bar/.

This is similar to what axum 0.5.x did by default, except this explicitly adds another route, so trying to add a /foo/ route after calling .route_with_tsr("/foo", /* ... */) will result in a panic due to route overlap.

Example
use axum::{routing::get, Router};
use axum_extra::routing::RouterExt;

let app = Router::new()
    // `/foo/` will redirect to `/foo`
    .route_with_tsr("/foo", get(|| async {}))
    // `/bar` will redirect to `/bar/`
    .route_with_tsr("/bar/", get(|| async {}));
source

fn route_service_with_tsr<T>(self, path: &str, service: T) -> Selfwhere T: Service<Request<B>, Error = Infallible> + Clone + Send + 'static, T::Response: IntoResponse, T::Future: Send + 'static, Self: Sized,

Add another route to the router with an additional “trailing slash redirect” route.

This works like RouterExt::route_with_tsr but accepts any Service.

Implementors§

source§

impl<S, B> RouterExt<S, B> for Router<S, B>where B: HttpBody + Send + 'static, S: Clone + Send + Sync + 'static,