SuperAPI AI 工具集

axum-impl-validation

办公与效率

查看项目

更新于 10-15 22:17

技能介绍

用途:Axum 本身不校验请求体,Json<T> 只保证 JSON 语法正确并能反序列化,不保证取值合理。本技能给出惯用方案:validator crate 加自定义提取器,把校验前移到类型层面。

主要能力:validator 0.20 提供 #[derive(Validate)] 与 .validate();支持 email、url、length、range、must_match、contains、does_not_contain、regex、custom、nested、required、credit_card 等属性。自定义 ValidatedJson<T> 提取器先委托 Json 解析(JsonRejection 保留自身 4xx 状态),再运行 .validate(),失败映射为 422 Unprocessable Entity。

必要用法:依赖为 validator = { version = "0.20", features = ["derive"] }。ValidatedJson 实现 FromRequest(非 FromRequestParts),必须作为 handler 最后一个参数,State 等 FromRequestParts 提取器放在前面。regex 校验须指向 LazyLock<Regex> 静态量,不可每请求编译。Axum 0.7 的 FromRequest 实现需加 #[async_trait],0.8 则去掉,其余代码一致。校验失败返回 422,JSON 解析失败保留 400 类状态;不要忽略 .validate() 的 Result。

适用场景:注册、下单等需要字段级校验的 Axum JSON 接口。限制:需自行编写提取器;garde 适合需要运行时上下文的校验;具体版本兼容与完整示例以官方资料为准。