Struct ajars_actix_web::actix_web::web::Query [−][src]
pub struct Query<T>(pub T);
Expand description
Extract typed information from the request’s query.
To extract typed data from the URL query string, the inner type T
must implement the
serde::Deserialize
trait.
Use QueryConfig
to configure extraction process.
Panics
A query string consists of unordered key=value
pairs, therefore it cannot be decoded into any
type which depends upon data ordering (eg. tuples). Trying to do so will result in a panic.
Examples
use actix_web::{get, web}; use serde::Deserialize; #[derive(Debug, Deserialize)] pub enum ResponseType { Token, Code } #[derive(Debug, Deserialize)] pub struct AuthRequest { id: u64, response_type: ResponseType, } // Deserialize `AuthRequest` struct from query string. // This handler gets called only if the request's query parameters contain both fields. // A valid request path for this handler would be `/?id=64&response_type=Code"`. #[get("/")] async fn index(info: web::Query<AuthRequest>) -> String { format!("Authorization request for id={} and type={:?}!", info.id, info.response_type) } // To access the entire underlying query struct, use `.into_inner()`. #[get("/debug1")] async fn debug1(info: web::Query<AuthRequest>) -> String { dbg!("Authorization object={:?}", info.into_inner()); "OK".to_string() } // Or use `.0`, which is equivalent to `.into_inner()`. #[get("/debug2")] async fn debug2(info: web::Query<AuthRequest>) -> String { dbg!("Authorization object={:?}", info.0); "OK".to_string() }
Implementations
Unwrap into inner T
value.
pub fn from_query(query_str: &str) -> Result<Query<T>, QueryPayloadError> where
T: DeserializeOwned,
pub fn from_query(query_str: &str) -> Result<Query<T>, QueryPayloadError> where
T: DeserializeOwned,
Deserialize T
from a URL encoded query parameter string.
let numbers = Query::<HashMap<String, u32>>::from_query("one=1&two=2").unwrap(); assert_eq!(numbers.get("one"), Some(&1)); assert_eq!(numbers.get("two"), Some(&2)); assert!(numbers.get("three").is_none());
Trait Implementations
See here for example of usage as an extractor.
type Config = QueryConfig
type Config = QueryConfig
Configuration for this extractor.
pub fn from_request(
req: &HttpRequest,
&mut Payload<Pin<Box<dyn Stream<Item = Result<Bytes, PayloadError>> + 'static, Global>>>
) -> <Query<T> as FromRequest>::Future
pub fn from_request(
req: &HttpRequest,
&mut Payload<Pin<Box<dyn Stream<Item = Result<Bytes, PayloadError>> + 'static, Global>>>
) -> <Query<T> as FromRequest>::Future
Create a Self from request parts asynchronously.
Create a Self from request head asynchronously. Read more
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
Auto Trait Implementations
impl<T> RefUnwindSafe for Query<T> where
T: RefUnwindSafe,
impl<T> UnwindSafe for Query<T> where
T: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
Compare self to key
and return true
if they are equal.
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
type Output = T
type Output = T
Should always be Self
pub fn vzip(self) -> V