axum
围绕 axum 的设计哲学、Extractor 与中间件实践。
-
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。
-
axum(一):设计哲学-类型驱动的零成本 Web 框架
axum 是 tokio 官方的 Web 框架,由 David Pedersen 在 2021 年创建。它的核心设计是:不写自己的中间件系统,直接用 tower::Service;不用宏做路由,用函数调用;不用运行时反射做参数提取,用编译期 trait 解析。整个 crate #![forbid(unsafe_code)]。