pub trait RouterExt<S>: Sealed {
// Required methods
fn typed_get<H, T, P>(self, handler: H) -> Self
where H: Handler<T, S>,
T: SecondElementIs<P> + 'static,
P: TypedPath;
fn typed_delete<H, T, P>(self, handler: H) -> Self
where H: Handler<T, S>,
T: SecondElementIs<P> + 'static,
P: TypedPath;
fn typed_head<H, T, P>(self, handler: H) -> Self
where H: Handler<T, S>,
T: SecondElementIs<P> + 'static,
P: TypedPath;
fn typed_options<H, T, P>(self, handler: H) -> Self
where H: Handler<T, S>,
T: SecondElementIs<P> + 'static,
P: TypedPath;
fn typed_patch<H, T, P>(self, handler: H) -> Self
where H: Handler<T, S>,
T: SecondElementIs<P> + 'static,
P: TypedPath;
fn typed_post<H, T, P>(self, handler: H) -> Self
where H: Handler<T, S>,
T: SecondElementIs<P> + 'static,
P: TypedPath;
fn typed_put<H, T, P>(self, handler: H) -> Self
where H: Handler<T, S>,
T: SecondElementIs<P> + 'static,
P: TypedPath;
fn typed_trace<H, T, P>(self, handler: H) -> Self
where H: Handler<T, S>,
T: SecondElementIs<P> + 'static,
P: TypedPath;
fn typed_connect<H, T, P>(self, handler: H) -> Self
where H: Handler<T, S>,
T: SecondElementIs<P> + 'static,
P: TypedPath;
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 typed_delete<H, T, P>(self, handler: H) -> Self
Available on crate feature typed-routing
only.
fn typed_delete<H, T, P>(self, handler: H) -> Self
typed-routing
only.Sourcefn typed_head<H, T, P>(self, handler: H) -> Self
Available on crate feature typed-routing
only.
fn typed_head<H, T, P>(self, handler: H) -> Self
typed-routing
only.Sourcefn typed_options<H, T, P>(self, handler: H) -> Self
Available on crate feature typed-routing
only.
fn typed_options<H, T, P>(self, handler: H) -> Self
typed-routing
only.Sourcefn typed_patch<H, T, P>(self, handler: H) -> Self
Available on crate feature typed-routing
only.
fn typed_patch<H, T, P>(self, handler: H) -> Self
typed-routing
only.Sourcefn typed_post<H, T, P>(self, handler: H) -> Self
Available on crate feature typed-routing
only.
fn typed_post<H, T, P>(self, handler: H) -> Self
typed-routing
only.Sourcefn typed_trace<H, T, P>(self, handler: H) -> Self
Available on crate feature typed-routing
only.
fn typed_trace<H, T, P>(self, handler: H) -> Self
typed-routing
only.Sourcefn typed_connect<H, T, P>(self, handler: H) -> Self
Available on crate feature typed-routing
only.
fn typed_connect<H, T, P>(self, handler: H) -> Self
typed-routing
only.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
.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementations on Foreign Types§
Source§impl<S> RouterExt<S> for Router<S>
impl<S> RouterExt<S> for Router<S>
Source§fn typed_get<H, T, P>(self, handler: H) -> Self
fn typed_get<H, T, P>(self, handler: H) -> Self
typed-routing
only.Source§fn typed_delete<H, T, P>(self, handler: H) -> Self
fn typed_delete<H, T, P>(self, handler: H) -> Self
typed-routing
only.Source§fn typed_head<H, T, P>(self, handler: H) -> Self
fn typed_head<H, T, P>(self, handler: H) -> Self
typed-routing
only.Source§fn typed_options<H, T, P>(self, handler: H) -> Self
fn typed_options<H, T, P>(self, handler: H) -> Self
typed-routing
only.Source§fn typed_patch<H, T, P>(self, handler: H) -> Self
fn typed_patch<H, T, P>(self, handler: H) -> Self
typed-routing
only.Source§fn typed_post<H, T, P>(self, handler: H) -> Self
fn typed_post<H, T, P>(self, handler: H) -> Self
typed-routing
only.Source§fn typed_put<H, T, P>(self, handler: H) -> Self
fn typed_put<H, T, P>(self, handler: H) -> Self
typed-routing
only.Source§fn typed_trace<H, T, P>(self, handler: H) -> Self
fn typed_trace<H, T, P>(self, handler: H) -> Self
typed-routing
only.Source§fn typed_connect<H, T, P>(self, handler: H) -> Self
fn typed_connect<H, T, P>(self, handler: H) -> Self
typed-routing
only.