pub trait RouterExt<S, B>: Sealed {
    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§

Available on crate feature typed-routing only.

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.

Available on crate feature typed-routing only.

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.

Available on crate feature typed-routing only.

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.

Available on crate feature typed-routing only.

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.

Available on crate feature typed-routing only.

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,

Available on crate feature typed-routing only.

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.

Available on crate feature typed-routing only.

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.

Available on crate feature typed-routing only.

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.

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::{Router, routing::get};
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 {}));

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

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

Implementations on Foreign Types§

Available on crate feature typed-routing only.
Available on crate feature typed-routing only.
Available on crate feature typed-routing only.
Available on crate feature typed-routing only.
Available on crate feature typed-routing only.
source§

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

Available on crate feature typed-routing only.
Available on crate feature typed-routing only.
Available on crate feature typed-routing only.

Implementors§