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

FastAPI如何返回Pydantic模型原字段名而非alias别名

解决方案

1. 单路由独立配置(最灵活,推荐)

直接在路由装饰器中添加response_model_by_alias=False参数即可,不需要修改返回值写法,完全保留类型标注和OpenAPI文档生成能力。
示例代码:

from fastapi import FastAPI
from pydantic import BaseModel, Field

app = FastAPI()

class FooModel(BaseModel):
    foo: str = Field(..., alias="bar")

# 仅当前接口生效,返回原始字段名
@app.get("/", response_model=FooModel, response_model_by_alias=False)
def root() -> FooModel:
    return FooModel(**{"bar": "baz"})

调用接口后返回结果为{"foo": "baz"},完全符合预期。

2. 全局统一配置

如果项目所有接口都需要默认返回Pydantic模型的原始字段名,可以在实例化FastAPI时全局配置该参数,不需要逐个路由添加:

app = FastAPI(response_model_by_alias=False)

如果有个别接口需要返回alias别名,单独给对应路由加response_model_by_alias=True覆盖全局配置即可。

补充说明

之前直接调用.dict(by_alias=False)返回字典的写法,会导致FastAPI跳过Pydantic响应校验、无法生成正确的接口文档,也破坏了类型标注的一致性,不推荐使用。上面两种方案都是FastAPI官方提供的标准实现,完全符合开发规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:15:03