标签: axum
与该标签相关的所有文章 "axum".
-
Rust 异步生态(总览):从 mio 到 axum 的分层架构
Rust 的异步网络栈是 mio → tokio → hyper → tower → axum 五层,每层职责单一、可独立替换。C++ Asio 把事件通知、调度、定时器、buffer、协程支持打包在一个库里。两种设计没有绝对优劣——Rust 的分层来自语言特性(ownership 使模块边界天然清晰),Asio 的一体化来自 C++ 生态的碎片化(没有统一运行时,不如自己全做)。
-
hyper(三):与 axum、tower 的架构关系
hyper 处理 HTTP 协议 (字节流 ↔ Request/Response), tower 提供中间件组合框架 (Service + Layer), axum 在两者之上添加路由和类型安全的请求提取. 三者的分工是: hyper 管"线路上的字节", tower 管"请求的处理流水线", axum 管"开发者体验". 理解这个三层架构是在 Rust 中写 HTTP 服务的基础.
-
axum(三):中间件与生产实践-tower 原生的 Web 应用
axum 不发明中间件系统——Router::layer() 直接接受任何 tower::Layer。tower-http 的 Trace/Compression/CORS/Timeout 全部开箱即用。from_fn 让你用普通 async 函数写中间件而不需要实现 Service + Layer。注意 .layer() 只影响它之前添加的路由,顺序是洋葱模型(后加的在外层)。
-
axum(二):Handler 与 Extractor-编译期请求解析的魔法
axum 的 handler 是普通 async fn,参数类型决定如何从 HTTP 请求中提取数据。FromRequestParts 提取头部/路径/query(不消耗 body),FromRequest 提取 body(只能有一个,必须放最后)。所有验证在编译期完成——类型不匹配编译器直接拒绝,不等到运行时 500。这背后是 allthetuples! 宏为 0~16 个参数生成的 17 个 Handler trait blanket impl。