首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【大家的项目】Axum 字段合法性校验工具:axum-valid

【大家的项目】Axum 字段合法性校验工具:axum-valid

作者头像
MikeLoveRust
发布2023-09-26 18:50:37
发布2023-09-26 18:50:37
7160
举报

这个 crate 提供了一个名为 Valid 的 axum 提取器,可以与 axum 框架的 PathQueryJsonForm 配合使用,自动调用 validator 库对其内部的对象自动进行合法性校验,也支持对自定义类型的提取器进行校验。

基本使用方法:

代码语言:javascript
复制
cargo add axum-valid
代码语言:javascript
复制
use validator::Validate;
use serde::Deserialize;
use axum_valid::Valid;
use axum::extract::Query;
use axum::Json;

#[derive(Debug, Validate, Deserialize)]
pub struct Pager {
    #[validate(range(min = 1, max = 50))]
    pub page_size: usize,
    #[validate(range(min = 1))]
    pub page_no: usize,
}

pub async fn get_page_by_query(
    Valid(Query(pager)): Valid<Query<Pager>>,
) {
    assert!((1..=50).contains(&pager.page_size));
    assert!((1..).contains(&pager.page_no));
}

pub async fn get_page_by_json(
    Valid(Json(pager)): Valid<Json<Pager>>,
) {
    assert!((1..=50).contains(&pager.page_size));
    assert!((1..).contains(&pager.page_no));
}

// ... 在 axum 的 router 中使用上述两个 handler

更详细具体的使用例子参考项目 tests 目录下的 basic.rs 和 custom.rs 文件。

该 crate 还提供了两个 feature:

  • 422: 验证错误时返回 422 而不是 400,不启用则默认使用 400.
  • into_json: 验证错误时会将错误对象序列化为 json 作为 http body 返回,不启用则默认使用 to_string.
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-03 17:26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档