use super::{FromRequest, RequestParts}; use async_trait::async_trait; use std::convert::Infallible; /// Extractor that extracts the raw query string, without parsing it. /// /// # Example /// /// ```rust,no_run /// use axum::prelude::*; /// use futures::StreamExt; /// /// async fn handler(extract::RawQuery(query): extract::RawQuery) { /// // ... /// } /// /// let app = route("/users", get(handler)); /// # async { /// # hyper::Server::bind(&"".parse().unwrap()).serve(app.into_make_service()).await.unwrap(); /// # }; /// ``` #[derive(Debug)] pub struct RawQuery(pub Option); #[async_trait] impl FromRequest for RawQuery where B: Send, { type Rejection = Infallible; async fn from_request(req: &mut RequestParts) -> Result { let query = req .uri() .and_then(|uri| uri.query()) .map(|query| query.to_string()); Ok(Self(query)) } }