use super::FromRequestParts; use async_trait::async_trait; use http::request::Parts; use std::convert::Infallible; /// Extractor that extracts the raw query string, without parsing it. /// /// # Example /// /// ```rust,no_run /// use axum::{ /// extract::RawQuery, /// routing::get, /// Router, /// }; /// use futures_util::StreamExt; /// /// async fn handler(RawQuery(query): RawQuery) { /// // ... /// } /// /// let app = Router::new().route("/users", get(handler)); /// # async { /// # axum::Server::bind(&"".parse().unwrap()).serve(app.into_make_service()).await.unwrap(); /// # }; /// ``` #[derive(Debug)] pub struct RawQuery(pub Option); #[async_trait] impl FromRequestParts for RawQuery where S: Send + Sync, { type Rejection = Infallible; async fn from_request_parts(parts: &mut Parts, _state: &S) -> Result { let query = parts.uri.query().map(|query| query.to_owned()); Ok(Self(query)) } }