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

FastAPI中Pydantic模型uuid4转字符串报错及api_key自动生成问题

问题解决:FastAPI POST请求422错误与动态生成UUID

错误原因

你代码里的核心问题是api_key字段的default_factory参数用法错误:

  • default_factory要求传入可调用对象(比如函数),用于动态生成默认值
  • 你直接写了uuid.uuid4().hex,这会立即生成一个字符串并赋值给default_factory,FastAPI尝试调用这个字符串时就会触发'str' object is not callable的422错误

修复代码

把UUID生成逻辑包装成可调用的lambda函数,让default_factory每次创建实例时动态生成新值:

import uuid
from pydantic import BaseModel, Field
from pydantic.networks import MACAddressStr, IPv4Address

class Terminal(BaseModel):
    api_key: str = Field(title="api key", default_factory=lambda: uuid.uuid4().hex)
    name: str = Field(..., title="Terminal name", regex="[^\s]+")
    mac: MACAddressStr = Field(..., title="MAC address")
    mgmt_ip: IPv4Address = Field(..., title="Management IP")

效果说明

  • 当POST请求不携带api_key字段时,系统会自动生成唯一的UUID4十六进制字符串
  • 手动传入api_key字符串时,会优先使用你传入的值,功能不受影响
  • 修复后发起POST请求,返回结果会和你期望的格式一致:
{
  "api_key": "5876753e02f141b5a83f7e9cff6db1ba",  // auto-generated
  "name": "terminal1",
  "mac": "aa:bb:cc:dd:ee:ff",
  "mgmt_ip": "1.1.1.1"
}

内容的提问来源于stack exchange,提问作者Angron Armor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:50:25