新建路由器

use juri::Router;

let router = Router::new();

添加处理函数

At 方式

只支持 getpost 两种请求方式

use juri::Router;

let mut router = Router::new();

router.at("/").get(handle_fn);

/// 路径一样时,可以链式调用
router.at("/").get(handle_fn).post(handle_fn);

函数定义

use juri::{handler, Request, Response};

/// 支持同步和异步。异步时在 `fn` 前添加 `async`
#[handler]
fn handle_fn(request: &Request) -> juri::Result<Response> {
    /// body
}

Route 方式

只支持 getpost 两种请求方式,另外支持 ws

use juri::Router;

let mut router = Router::new();

/// 由函数提供,请求方法和路径
router.route(handle_fn);

函数定义

use juri::{get, post, Request, Response, WSRequest, WSResponse};

/// 支持同步和异步。异步时在 `fn` 前添加 `async`
#[get("/")]
fn handle_fn(request: &Request) -> juri::Result<Response> {
    /// body
}

/// 使用 ws 时,只需在 `get` 宏中加 ws 参数即可,其他同 get 请求格式
#[get("/", ws)]
fn handle_fn_ws(request: &juri::Request) -> juri::Result<WSResponse> {
    /// body
}

/// 支持同步和异步。异步时在 `fn` 前添加 `async`
#[post("/")]
fn handle_fn_post(request: &Request) -> juri::Result<Response> {
    /// body
}

路由器分组


#![allow(unused)]
fn main() {
use juri::Router;

let mut router = Router::new();
router.at("/").get(handle_fn);

let mut child_router = Router::new();
child_router.at("/one").get(child_handle_fn);

/// 此时,`/` 和 `/one` 都可以处理
router.router(child_router);
}

子路由添加根路径


#![allow(unused)]
fn main() {
use juri::Router;

let mut router = Router::new();
router.at("/").get(handle_fn);

let mut child_router = Router::new();
child_router.root("/hi");
child_router.at("/one").get(child_handle_fn);

/// 此时处理 `/` 和 `/hi/one`
/// 也就是路径是 `/hi/one`,才执行 `child_handle_fn` 函数
router.router(child_router);
}