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}
三,测试效果:

浙公网安备 33010602011771号