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日 |
#1300 在 HTTP服务器
每月下载 2,292次
在9个Crate中使用(直接使用8个)
88KB
1.5K SLoC
欢迎使用Trillium!
📖 指南 📖
指南提供了架构概述以及连接trillium crates的地形图。
📑 Rustdocs 📑
Rustdocs代表了了解trillium的任何单个crate和具体接口的最好方式。
法律
许可协议为以下之一
- Apache License,版本2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任您选择。
除非您明确声明,否则根据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!只要它们都依赖于同一版本的trillium
crate,就应该能够在彼此内部嵌套不同类型的路由器(以及不同版本的路由器crate)。
选项处理
默认情况下,trillium路由器会对给定的路由上的支持http方法的列表响应OPTIONS请求。如果OPTIONS请求是针对any
发送的,它将响应此路由器支持的完整HTTP方法集。
注意: 此行为被显式的OPTIONS处理器或any
处理器取代。
要禁用默认的OPTIONS行为,请使用 Router::without_options_handling
或 RouterRef::set_options_handling
依赖项
~7.5MB
~189K SLoC