Skip to main content

RequestQueryExt

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".

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§