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

如何在FastAPI中使用BaseModel处理POST请求的未知参数?

解决FastAPI接口接收未知可选参数的问题

要让你的POST接口支持接收height、weight这类未预先定义的可选参数,只需修改Pydantic模型配置并调整接口逻辑即可:

步骤1:修改Pydantic模型,允许额外字段

给Request类添加Config子类,设置extra='allow',让Pydantic保留请求中未定义的字段:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Request(BaseModel):
    user_name: str
    age: int
    
    # 配置允许接收额外字段
    class Config:
        extra = 'allow'


@app.post("/home")
def write_home(request: Request):
    # 转换为包含所有字段的字典(含额外参数)
    full_request_data = request.dict()
    print(full_request_data)
    return full_request_data

关键细节

  • extra='allow':禁止Pydantic忽略未定义字段,转而将这些字段保留在模型实例中
  • request.dict():返回包含所有已定义字段和额外字段的完整字典,直接打印或返回即可获取所有参数
  • 若需单独提取未知字段,可直接访问request.__pydantic_extra__,它是存储所有额外字段的字典:
    print("额外参数:", request.__pydantic_extra__)
    

修改完成后,传入包含height、weight的请求体时,控制台会打印所有参数,接口也会返回这些额外字段。

内容的提问来源于stack exchange,提问作者Marco Parrinello

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:13:26