Q1:当需要根据两个字段的组合值进行验证时,应该使用哪种验证器?
A) @field_validator
B) @model_validator(mode='before')
C) 直接在路由函数中验证
D) 使用多个@field_validator
答案解析正确答案:B @model_validator(mode='before') 可以访问所有原始输入值,得当处置惩罚跨字段的联合验证逻辑。当需要基于多个字段的原始值(尚未经过类型转换)进行判断时,必须使用before模式的模型验证器。Q2:如何确保手机号字段在特定条件下同时满足格式要求和必填要求?
A) 分别编写格式验证和必填验证
B) 在Field中同时指定pattern和validation函数
C) 使用多个验证器装饰器
D) 以上都是
答案解析正确答案:D Pydantic的验证机制是叠加式的: 1. 通过Field的pattern参数进行正则验证 2. 通过@field_validator进行格式补充验证 3. 在模型验证器中处置惩罚必填逻辑 这些验证器会按声明顺序依次执行,共同确保数据有效性。Q3:当收到422错误但不确定具体验证规则时,最佳调试方式是什么?
A) 检察FastAPI自动生成的API文档
B) 在验证器中添加print语句
C) 使用try-except捕获ValidationError
D) 以上都是
答案解析正确答案:D 组合调试方案: 1. 查阅Swagger文档中的请求示例格式 2. 在验证器中打印values值观察处置惩罚过程 3. 通过如下代码捕获详细错误信息: