You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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"}

测试场景示例

  1. 缺失password字段的请求
    请求体:
{
  "username": "abc",
  "port": "3306"
}

响应:

{
  "detail": "password required"
}
  1. username字段为空的请求
    请求体:
{
  "username": "",
  "port": "3306",
  "password": "my-secret-pass"
}

响应:

{
  "detail": "username required"
}

关键特性

  • 动态适配:required_fields列表直接关联数据库模型,后续字段增减无需修改校验逻辑
  • 严格校验:同时覆盖字段缺失、空字符串、全空格空值三种异常情况
  • 标准响应:使用FastAPI内置的HTTPException返回规范的400错误格式

内容的提问来源于stack exchange,提问作者M.K.S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:17:05