[][src]Crate roa_router

The router module of roa. This module provides many endpoint wrappers like Router, Dispatcher and a context extension RouterParam.

Example

use roa_router::{Router, RouterParam, get, allow};
use roa_core::{App, Context, Error, MiddlewareExt, Next};
use roa_core::http::{StatusCode, Method};
use roa_tcp::Listener;
use async_std::task::spawn;


async fn gate(_ctx: &mut Context<()>, next: Next<'_>) -> Result<(), Error> {
    next.await
}

async fn query(ctx: &mut Context<()>) -> Result<(), Error> {
    Ok(())
}

async fn create(ctx: &mut Context<()>) -> Result<(), Error> {
    Ok(())
}

async fn graphql(ctx: &mut Context<()>) -> Result<(), Error> {
    Ok(())
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let router = Router::new()
        .gate(gate)
        .on("/restful", get(query).post(create))
        .on("/graphql", allow([Method::GET, Method::POST], graphql));
    let app = App::new(())
        .end(router.routes("/api")?);
    let (addr, server) = app.run()?;
    spawn(server);
    let resp = reqwest::get(&format!("http://{}/api/restful", addr)).await?;
    assert_eq!(StatusCode::OK, resp.status());

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

Structs

Dispatcher

An endpoint wrapper to dispatch requests by http method.

Guard

An endpoint wrapper to guard endpoint by http method.

RouteTable

An endpoint to route request by uri path.

Router

A builder of RouteTable.

Enums

RouterError

Error occurring in building route table.

Traits

RouterParam

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

Functions

allow

A function to construct guard by white list.

connect

Function to construct dispatcher with Method::CONNECT and an endpoint.

delete

Function to construct dispatcher with Method::DELETE and an endpoint.

deny

A function to construct guard by black list.

get

Function to construct dispatcher with Method::GET and an endpoint.

head

Function to construct dispatcher with Method::HEAD and an endpoint.

options

Function to construct dispatcher with Method::OPTIONS and an endpoint.

patch

Function to construct dispatcher with Method::PATCH and an endpoint.

post

Function to construct dispatcher with Method::POST and an endpoint.

put

Function to construct dispatcher with Method::PUT and an endpoint.

trace

Function to construct dispatcher with Method::TRACE and an endpoint.