12个版本

0.4.1 2024年4月7日
0.4.0 2024年3月22日
0.3.6 2024年1月2日
0.3.5 2023年3月20日
0.2.0 2021年7月8日

#1300HTTP服务器

Download history 1979/week @ 2024-04-03 1232/week @ 2024-04-10 817/week @ 2024-04-17 667/week @ 2024-04-24 1102/week @ 2024-05-01 560/week @ 2024-05-08 816/week @ 2024-05-15 604/week @ 2024-05-22 1050/week @ 2024-05-29 882/week @ 2024-06-05 1332/week @ 2024-06-12 764/week @ 2024-06-19 429/week @ 2024-06-26 534/week @ 2024-07-03 587/week @ 2024-07-10 702/week @ 2024-07-17

每月下载 2,292次
9个Crate中使用(直接使用8个)

MIT/Apache

88KB
1.5K SLoC

欢迎使用Trillium!

📖 指南 📖

指南提供了架构概述以及连接trillium crates的地形图。

📑 Rustdocs 📑

Rustdocs代表了了解trillium的任何单个crate和具体接口的最好方式。




法律

许可协议为以下之一

任您选择。

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交的任何贡献都应按上述方式双重许可,无需任何额外条款或条件。


lib.rs:

欢迎使用trillium路由器crate!

此路由器建立在routefinder之上,路由解析和定义的详细信息记录在该仓库中。

use trillium::{conn_unwrap, Conn};
use trillium_router::{Router, RouterConnExt};

let router = Router::new()
.get("/", |conn: Conn| async move { conn.ok("you have reached the index") })
.get("/pages/:page_name", |conn: Conn| async move {
let page_name = conn_unwrap!(conn.param("page_name"), conn);
let content = format!("you have reached the page named {}", page_name);
conn.ok(content)
});

use trillium_testing::prelude::*;
assert_ok!(get("/").on(&router), "you have reached the index");
assert_ok!(get("/pages/trillium").on(&router), "you have reached the page named trillium");
assert_not_handled!(get("/unknown/route").on(&router));

尽管目前这是唯一的trillium路由器,但它仍然是trillium架构的一个重要方面,即路由器仅使用公共API,并且可以与其他路由器实现互操作。如果您对路由器的工作方式有不同的想法,请发布一个crate!只要它们都依赖于同一版本的trilliumcrate,就应该能够在彼此内部嵌套不同类型的路由器(以及不同版本的路由器crate)。

选项处理

默认情况下,trillium路由器会对给定的路由上的支持http方法的列表响应OPTIONS请求。如果OPTIONS请求是针对any发送的,它将响应此路由器支持的完整HTTP方法集。

注意: 此行为被显式的OPTIONS处理器或any处理器取代。

要禁用默认的OPTIONS行为,请使用 Router::without_options_handlingRouterRef::set_options_handling

依赖项

~7.5MB
~189K SLoC