用途:为 Axum 服务生成 OpenAPI 3 规范并托管 Swagger UI,通过 utoipa 系列 crate 在编译期从 Rust 注解生成文档,使规范与代码同源、不易漂移。
主要能力:utoipa(5.5.0)提供 ToSchema、#[utoipa::path]、OpenApi、IntoParams、IntoResponses、ToResponse 等宏;utoipa-swagger-ui(9.0.2)打包并提供交互式 Swagger UI;utoipa-axum(0.2.0)提供 OpenApiRouter,通过 routes!() 一次注册处理器,同时生成路由与规范。
使用方式:三个 crate 版本独立,需分别显式固定版本,例如 utoipa = { version = "5", features = ["axum_extras"] }、utoipa-axum = "0.2"、utoipa-swagger-ui = { version = "9", features = ["axum"] }。新服务推荐用 OpenApiRouter 配合 routes!() 与 split_for_parts(),再用 SwaggerUi::new("/swagger-ui").url("/api-docs/openapi.json", api) 挂载 UI;已有 Router 可增量使用普通 utoipa 的 #[derive(OpenApi)] 与 paths(...)。#[utoipa::path] 的 path 必须用 {param} 花括号语法,HTTP 操作须为首个参数。
适用场景:需要为 Axum 服务提供 API 文档、请求响应 schema 描述或交互式调试界面时。
限制:utoipa-axum 仍为 pre-1.0,其 OpenApiRouter 接口对版本敏感,未来 0.x 可能重命名 routes!、split_for_parts 或构造函数;普通 utoipa 方式需在 Router 与 paths(...) 中重复注册处理器;utoipa-swagger-ui 必须启用 axum feature;不应手写或手改 OpenAPI JSON。其余细节暂未提供。