FastAPI中动态校验MySQL模型字段在请求中是否存在的需求
FastAPI 动态校验请求必填字段(适配数据库字段列表变更)
实现思路
直接遍历从MySQL数据库模型获取的必填字段列表,逐一检查请求中对应字段是否存在且非空,若字段缺失或为空则返回指定错误提示,全程动态适配列表的后续变更。
完整代码实现
from fastapi import FastAPI, HTTPException from pydantic import BaseModel app = FastAPI() # 模拟从MySQL模型读取的必填字段列表,后续字段增减直接更新此列表即可 required_fields = ['port', 'username', 'password'] # 定义请求模型,字段默认设为空字符串用于空值校验 class DBConfigRequest(BaseModel): username: str = "" port: str = "" password: str = "" @app.post("/validate-db-config") async def validate_db_config(request: DBConfigRequest): # 将Pydantic对象转为字典,方便动态字段检查 request_data = request.dict() for field in required_fields: # 同时检查字段是否缺失、值为空(含全空格的空值) if field not in request_data or not request_data[field].strip(): raise HTTPException(status_code=400, detail=f"{field} required") return {"status": "ok", "msg": "All required fields are provided"}
测试场景示例
- 缺失password字段的请求
请求体:
{ "username": "abc", "port": "3306" }
响应:
{ "detail": "password required" }
- username字段为空的请求
请求体:
{ "username": "", "port": "3306", "password": "my-secret-pass" }
响应:
{ "detail": "username required" }
关键特性
- 动态适配:
required_fields列表直接关联数据库模型,后续字段增减无需修改校验逻辑 - 严格校验:同时覆盖字段缺失、空字符串、全空格空值三种异常情况
- 标准响应:使用FastAPI内置的
HTTPException返回规范的400错误格式
内容的提问来源于stack exchange,提问作者M.K.S
相关产品推荐
相关产品推荐

