Struct axum::extract::MatchedPath
source · [−]pub struct MatchedPath(_);
Available on crate feature
matched-path
only.Expand description
Access the path in the router that matches the request.
use axum::{
Router,
extract::MatchedPath,
routing::get,
};
let app = Router::new().route(
"/users/:id",
get(|path: MatchedPath| async move {
let path = path.as_str();
// `path` will be "/users/:id"
})
);
MatchedPath
can also be accessed from middleware via request extensions.
This is useful for example with Trace
to
create a span that contains the matched path:
use axum::{
Router,
extract::MatchedPath,
http::Request,
routing::get,
};
use tower_http::trace::TraceLayer;
let app = Router::new()
.route("/users/:id", get(|| async { /* ... */ }))
.layer(
TraceLayer::new_for_http().make_span_with(|req: &Request<_>| {
let path = if let Some(path) = req.extensions().get::<MatchedPath>() {
path.as_str()
} else {
req.uri().path()
};
tracing::info_span!("http-request", %path)
}),
);
Implementations
sourceimpl MatchedPath
impl MatchedPath
Trait Implementations
sourceimpl Clone for MatchedPath
impl Clone for MatchedPath
sourcefn clone(&self) -> MatchedPath
fn clone(&self) -> MatchedPath
Returns a copy of the value. Read more
1.0.0 · sourceconst fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresourceimpl Debug for MatchedPath
impl Debug for MatchedPath
sourceimpl<B> FromRequest<B> for MatchedPathwhere
B: Send,
impl<B> FromRequest<B> for MatchedPathwhere
B: Send,
type Rejection = MatchedPathRejection
type Rejection = MatchedPathRejection
If the extractor fails it’ll use this “rejection” type. A rejection is
a kind of error that can be converted into a response. Read more
sourcefn from_request<'life0, 'async_trait>(
req: &'life0 mut RequestParts<B>
) -> Pin<Box<dyn Future<Output = Result<Self, Self::Rejection>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn from_request<'life0, 'async_trait>(
req: &'life0 mut RequestParts<B>
) -> Pin<Box<dyn Future<Output = Result<Self, Self::Rejection>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Perform the extraction.
Auto Trait Implementations
impl RefUnwindSafe for MatchedPath
impl Send for MatchedPath
impl Sync for MatchedPath
impl Unpin for MatchedPath
impl UnwindSafe for MatchedPath
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more