ignitia:一个针对Rust的快速、轻量级Web框架


Ignitia是一个非常快速,轻量级的Rust Web框架,具有可扩展的运行时,HTTP/1和HTTP/2支持,可扩展的路由,中间件,WebSocket集成,多部分/表单数据解析和强大的安全中间件,用于有效地构建现代Web服务。

产品特点
使用Rust的零成本抽象构建,并针对最大性能进行了优化。

核心功能

  • 时间复杂度为O(log n)的树路由算法
  • 零成本抽象:以最小的运行时开销进行实时优化
  • 人体工学API:受Axum和Actix启发的直观构建器模式
  • ️Type-Safe:利用Rust的类型系统来保证编译时安全
  • 中间件:可组合的中间件系统,带有from_fn helper
  • 状态管理:内置共享应用程序状态支持
  • 默认安全:HTTPS/TLS、CORS、安全头和速率限制
  • 支持WebSocket:全功能的WebSocket实现
  • 丰富的提取器:路径,查询,JSON,表单,标题,饼干,状态
v0.2.4增强功能
  • IntoResponse Trait:返回任何实现IntoResponse的类型
  • 统一JSON:输入和输出都是单一的Json类型
  • 卓越性能:通过中间件优化,延迟减少94%
  • 文档:全面的rustdoc覆盖率和示例
  • 简化的API:仅限Radix路由,可靠的响应构建器

代码:

use ignitia::{Router, Response, Server};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let router = Router::new()
        .get("/", || async {
            Ok(Response::text(
" Ignitia is blazing!"))
        })
        .get(
"/api/users/{id}", |Path(id): Path<u32>| async move {
            Ok(Response::json(json!({
               
"user_id": id,
               
"message": "User found!"
            }))?)
        });

    Server::new(router,
"127.0.0.1:3000".parse()?)
        .ignitia()
        .await?;

    Ok(())
}