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

如何为通过dataclass传递的FastAPI查询参数添加描述?

解决FastAPI中dataclass查询参数添加描述的问题

你用标准库dataclass的field添加metadata={'description': ...}没效果,是因为FastAPI将标准dataclass转为Pydantic模型时,不会解析标准field的metadata到OpenAPI文档中。以下是两种可行的解决方法:

方法一:使用Pydantic的dataclass装饰器

替换标准库的dataclass为Pydantic提供的版本,这样就能通过Field函数或metadata正确添加描述:

from pydantic.dataclasses import dataclass
from fastapi import FastAPI, Depends
from pydantic import Field

app = FastAPI()

@dataclass
class MyDataclass:
    # 方式1:直接用Pydantic的Field指定描述
    x: str = Field(default=None, description="descr of x")
    
    # 方式2:用metadata(同样生效)
    # x: str = field(default=None, metadata={'description': 'descr of x'})

@app.get("/")
async def root(f: MyDataclass = Depends()):
    return {"message": "Hello World"}

方法二:改用Pydantic BaseModel(推荐)

FastAPI原生对BaseModel支持更完善,直接定义模型类更直观:

from pydantic import BaseModel, Field
from fastapi import FastAPI, Depends

app = FastAPI()

class MyParams(BaseModel):
    x: str = Field(default=None, description="descr of x")

@app.get("/")
async def root(f: MyParams = Depends()):
    return {"message": "Hello World"}

两种方法都能让参数x的描述正常显示在Swagger UI的自动文档中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:06:10