Axum 是构建在 Tokio、Tower 和 Hyper 之上的、符合人体工程学且模块化的 Rust Web 应用框架,面向高吞吐、类型安全的异步 Rust 服务。
用途:适合在 Tokio 生态内直接构建 RESTful API 与微服务、利用 Tower 的限流/超时/重试/追踪等中间件、组合类型安全的路由处理器,以及实现高性能 WebSocket 与 SSE 实时事件流。
主要能力:使用 Router 定义路由,以 extractor 解析路径、状态与请求体;通过 State 与 Router::with_state 实现依赖注入和共享状态,并在嵌套子路由间进行编译期状态类型校验;通过 FromRequestParts 等 trait 编写带错误拒绝的自定义提取器;用 ServiceBuilder 叠加 TraceLayer、CorsLayer、TimeoutLayer 等 Tower 中间件。
必要用法:使用 axum::serve 配合 tokio::net::TcpListener 启动服务(示例为 Axum 0.7+)。State 提取器应放在处理器参数末尾,请求体提取器也需为最后一个参数。建议为领域错误枚举实现 IntoResponse。
限制与注意:不要在异步工作线程中执行阻塞操作,应使用 tokio::task::spawn_blocking;不要在处理器内部创建独立的 Tokio 运行时;避免在 HTTP 错误响应中直接暴露内部数据库错误细节。常见问题包括子状态无法从全局状态派生(需实现 FromRef 或派生 Clone)以及处理器参数顺序不合法导致未实现 Handler。具体收费、价格、平台支持等信息暂未提供。