Trait RequestQueryExt

Source
pub trait RequestQueryExt {
    // Required methods
    fn queries(&self) -> &HashMap<String, String>;
    fn query<P: Into<String>>(&self, query_name: P) -> Option<&String>;
}
Expand description

An extension trait which extends the hyper::Request type with some helpful methods to access query values from req object.

Required Methods§

Source

fn queries(&self) -> &HashMap<String, String>

It returns the parsed queries in a HashMap.

§Examples
use hyper::{Body, Request, Response, Server};
use routerify::{Router, RouterService};
// Import the query_parser function and the RequestQueryExt trait.
use routerify_query::{query_parser, RequestQueryExt};
use std::{convert::Infallible, net::SocketAddr};

// A handler for "/" page. Visit: "/?username=Alice&bookname=HarryPotter" to see query values.
async fn home_handler(req: Request<Body>) -> Result<Response<Body>, Infallible> {
    // Access the query values.
    let queries = req.queries();

    let user_name = queries.get("username").unwrap();
    let book_name = queries.get("bookname").unwrap();

    Ok(Response::new(Body::from(format!(
        "User: {}, Book: {}",
        user_name, book_name
    ))))
}

// Create a router.
Router::builder()
  // Attach the query_parser middleware.
  .middleware(query_parser())
  .get("/", home_handler)
  .build()
  .unwrap()
}
Source

fn query<P: Into<String>>(&self, query_name: P) -> Option<&String>

It returns the query value by a query name.

§Examples
use hyper::{Body, Request, Response, Server};
use routerify::{Router, RouterService};
// Import the query_parser function and the RequestQueryExt trait.
use routerify_query::{query_parser, RequestQueryExt};
use std::{convert::Infallible, net::SocketAddr};

// A handler for "/" page. Visit: "/?username=Alice&bookname=HarryPotter" to see query values.
async fn home_handler(req: Request<Body>) -> Result<Response<Body>, Infallible> {
    // Access the query values.
    let user_name = req.query("username").unwrap();
    let book_name = req.query("bookname").unwrap();

    Ok(Response::new(Body::from(format!(
        "User: {}, Book: {}",
        user_name, book_name
    ))))
}

// Create a router.
Router::builder()
  // Attach the query_parser middleware.
  .middleware(query_parser())
  .get("/", home_handler)
  .build()
  .unwrap()
}

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 RequestQueryExt for Request<Body>

Source§

fn queries(&self) -> &HashMap<String, String>

Source§

fn query<P: Into<String>>(&self, query_name: P) -> Option<&String>

Implementors§