Trait axum_extra::routing::RouterExt
source · pub trait RouterExt<S>: Sealed {
// Required methods
fn route_with_tsr(self, path: &str, method_router: MethodRouter<S>) -> Self
where Self: Sized;
fn route_service_with_tsr<T>(self, path: &str, service: T) -> Self
where T: Service<Request, 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§
sourcefn route_with_tsr(self, path: &str, method_router: MethodRouter<S>) -> Selfwhere
Self: Sized,
fn route_with_tsr(self, path: &str, method_router: MethodRouter<S>) -> 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::{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 {}));
sourcefn route_service_with_tsr<T>(self, path: &str, service: T) -> Selfwhere
T: Service<Request, Error = Infallible> + Clone + Send + 'static,
T::Response: IntoResponse,
T::Future: Send + 'static,
Self: Sized,
fn route_service_with_tsr<T>(self, path: &str, service: T) -> Selfwhere
T: Service<Request, 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
.