005、数据验证与序列化:Pydantic模型深度应用
昨天联调时又遇到个典型问题:前端传了个{"price": "99.99"}过来,我这边用float类型接收,结果数据库里存成了99.99000000000001。这种精度问题在金融场景下就是线上事故。更麻烦的是,另一个接口的日期字段传了"2024-13-45"这种离谱数据,服务端直接500错误——这就是没做好数据验证的代价。
为什么Pydantic不是可选项
很多刚用FastAPI的同事觉得Pydantic就是个声明类型的工具,写个class Item(BaseModel)就完事了。实际上它承担了三个关键角色:数据验证、序列化配置、文档生成。缺了任何一环,接口的健壮性都要打折扣。
看看这个踩坑案例:
# 别这样写classUser(BaseModel):