fastapi: Pydantic v2默认包含的参数校验规则

一,官方文档地址:

https://pydantic.dev/docs/validation/latest/api/pydantic/fields/

安装用到的库:校验邮箱时用到

$ pip install 'pydantic[email]'

二,代码的例子:

# 1. 定义校验规则
# ^[\u4e00-\u9fa5a-zA-Z0-9]{3,20}$ 说明:
# \u4e00-\u9fa5 匹配汉字(常用中文字符集)
# a-zA-Z0-9 匹配大小写字母和数字
# {3,20} 限制字符长度为 3 到 20 位
NicknameType = Annotated[
    str,
    Field(
        pattern=r"^[\u4e00-\u9fa5a-zA-Z0-9]{3,20}$",
        description="昵称只能由字母、数字、汉字组成,长度3-20个字符"
    )
]

# 匹配中国大陆 11 位手机号(以 1 开头,第二位通常为 3-9)
PhoneType = Annotated[
    str,
    Field(
        pattern=r"^1[3-9]\d{9}$",
        description="需要合法的11位手机号码"
    )
]

# 2. 构建数据模型
class UserRegisterModel(BaseModel):
    nickname: NicknameType
    email: EmailStr  # Pydantic v2 内置邮件校验,会自动进行 RFC 标准检验,这个特殊一些,报错信息在异常处理中写死
    phone: PhoneType


@router.post("/register")
async def register_user(user: Annotated[UserRegisterModel, Form()],):
    # 如果代码走到这里,说明参数已经全部校验通过
    return {"message": "注册成功", "user": user.username}

 

三,测试效果:

image

posted @ 2026-06-24 21:01  刘宏缔的架构森林  阅读(2)  评论(0)    收藏  举报