SuperAPI AI 工具集

axum

编程与开发

查看项目

更新于 10-15 20:31

技能介绍

Axum 是建立在 Tower/Hyper/Tokio 之上的 Rust HTTP 路由与 extractor 框架:handler 保持小巧,状态显式传递,通过 Router 组合、借助 Tower 中间件扩展。

用途与能力:用于创建或审查 Rust HTTP API 与服务。核心包括 Router 路由(nest/merge 分组、显式 get/post/put/patch/delete)、类型化 extractors(Path、Query、Json、Form、State、自定义如 AuthUser/Pagination)、共享状态(State<AppState>,廉价 Clone)、集中式 AppError 并实现 IntoResponse、Tower/tower-http 中间件(TraceLayer、CorsLayer、CompressionLayer、TimeoutLayer、RequestBodyLimitLayer 等)、Tokio 异步运行时与 tracing 结构化日志。

组织方式:main.rs 负责启动配置与 serve,lib.rs 暴露可测试的 app() 返回 Router,另有 routes/、handlers/、extractors/、error.rs、state.rs、services/。app() 无需绑定 socket 即可测试。

必要用法与约定:handler 为 async 并返回 impl IntoResponse 或 Result<T, AppError>;输入走类型化 extractor;认证授权在服务端完成(extractor/中间件),不能只依赖客户端;不在 handler 中阻塞 Tokio 运行时;提取器顺序重要,验证在解码之后进行。测试可用 tower::ServiceExt::oneshot 或项目内 helper,覆盖 200/401/403/404 与校验场景。

技术栈:axum、tokio、tower/tower-http、serde、tracing;HTTP 客户端 reqwest;数据库沿用仓库既有方案(sqlx 或已有 ORM,如 sea-orm/diesel),不擅自引入新 ORM。

限制与反模式:避免业务逻辑堆积在 main.rs、handler 中 unwrap、脆弱的请求部件共享、CORS 通配符搭配凭据、忽略超时与取消;Internal 错误仅记录日志并对外返回通用信息。资料未提供具体安装命令、版本号、价格或平台信息。