[][src]Module roa::router

The router module of roa. This module provides a middleware RouteEndpoint and a context extension RouterParam.

Example

use roa::router::{Router, RouterParam};
use roa::core::{App, StatusCode};
use async_std::task::spawn;

#[tokio::test]
async fn gate() -> Result<(), Box<dyn std::error::Error>> {
    let mut router = Router::<()>::new();
    router
        .gate_fn(|ctx, next| async move {
            next().await
        })
        .get("/", |ctx| async move {
            Ok(())
        });
    let (addr, server) = App::new(()).gate(router.routes("/route")?).run_local()?;
    spawn(server);
    let resp = reqwest::get(&format!("http://{}/route", addr)).await?;
    assert_eq!(StatusCode::OK, resp.status());

    let resp = reqwest::get(&format!("http://{}/endpoint", addr)).await?;
    assert_eq!(StatusCode::NOT_FOUND, resp.status());
    Ok(())
}

Structs

RouteEndpoint

A endpoint to handle request by uri path and http method.

Router

A builder of RouteEndpoint.

Traits

RouterParam

A context extension. This extension must be used in downstream of middleware RouteEndpoint, otherwise you cannot get expected router parameter.