Module roa::query

source · []
Expand description

This module provides a middleware query_parser and a context extension Query.

Example

use roa::query::query_parser;
use roa::{App, Context};
use roa::http::StatusCode;
use roa::preload::*;
use tokio::task::spawn;

async fn must(ctx: &mut Context) -> roa::Result {
    assert_eq!("Hexilee", &*ctx.must_query("name")?);
    Ok(())
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let app = App::new()
        .gate(query_parser)
        .end(must);
    let (addr, server) = app.run()?;
    spawn(server);
    let resp = reqwest::get(&format!("http://{}?name=Hexilee", addr)).await?;
    assert_eq!(StatusCode::OK, resp.status());
    Ok(())
}

Traits

A context extension. This extension must be used in downstream of middleware query_parser, otherwise you cannot get expected query variable.

Functions

A middleware to parse query.