#http-router #web-server #router #http #server #web

纤维

使用Rust编写的快速且强大的HTTP路由器

5个不稳定版本

0.2.0 2024年6月15日
0.1.2 2024年6月14日
0.1.1 2024年5月27日
0.1.0 2024年5月26日
0.0.0 2024年3月13日

#405 in HTTP服务器

MIT许可证

130KB
2K SLoC

纤维

⚠️ 警告:尚未准备好用于生产!⚠️

使用Rust编写的快速且强大的HTTP路由器

Crates.io MIT licensed Documentation Build Status Build Status Build Status

特性

  • 异步API
  • 强大的路由器
  • 灵活的中件间
  • 命名参数
  • 全局支持
  • 正则表达式匹配
  • URL重写
  • URL重定向
  • 域名过滤
  • 子域名过滤
  • 子路由支持
  • 多样化的响应
  • 流支持
  • 双栈支持
  • 多个监听器

示例

启动

[dependencies]
fibra = "0.x"
tokio = { version = "1", features = ["full"] }
use fibra::*;

#[tokio::main]
async fn main() -> FibraResult<()> {
    let mut app = Fibra::new();
    app.get("/", "Hello World!")?;
    app.bind(3000)?;
    app.run().await
}

基本

工具

性能

  • todo 使用两台机器,wrk

基准测试

  • MacBook Air, Apple M2 24G, Sonoma 14.5, Rust 1.79
名称 时间
run_baseline [307.88 ns 309.69 ns 311.91 ns]
run_routes_1 [898.58 ns 900.80 ns 903.07 ns]
run_routes_8_front [904.38 ns 906.53 ns 908.77 ns]
run_routes_8_middle [905.60 ns 907.58 ns 909.63 ns]
run_routes_8_back [929.73 ns 932.53 ns 935.54 ns]
run_routes_16 [938.56 ns 940.53 ns 942.66 ns]
req_empty [54.292 ns 54.320 ns 54.349 ns]
req_hyper [156.59 ns 156.73 ns 156.86 ns]
req_build [166.22 ns 166.29 ns 166.36 ns]
res_empty [11.436 ns 11.450 ns 11.465 ns]
res_full [119.16 ns 119.53 ns 119.98 ns]
res_status_body [15.415 ns 15.417 ns 15.420 ns]
res_status [11.562 ns 11.572 ns 11.581 ns]
res_body [15.391 ns 15.393 ns 15.397 ns]

文档

文档可在此处找到。

许可证

本软件根据MIT许可证发布。

依赖

~18–30MB
~498K SLoC