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

FastAPI中为响应体添加多个示例以展示在API文档

解决FastAPI响应体多示例显示问题

原代码中通过json_schema_extra配置的examples仅对请求体的Schema生效,要实现响应体的多示例下拉选择,需要在路由中单独配置响应示例。以下是两种可行方案:

方案一:通过路由responses参数定义响应示例

直接在路由装饰器中指定状态码对应的响应示例,可为每个示例设置名称、描述和具体内容:

import uvicorn
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    value: str

@app.get(
    path="/",
    responses={
        200: {
            "description": "返回的Item对象",
            "content": {
                "application/json": {
                    "examples": {
                        "Normal Example": {
                            "summary": "普通示例",
                            "value": {"value": "A normal example"}
                        },
                        "Converted Data Example": {
                            "summary": "转换后数据示例",
                            "value": {"value": "An example with converted data"}
                        },
                        "Invalid Data Example": {
                            "summary": "无效数据示例(仅展示用)",
                            "value": {"value": "Invalid data ..."}
                        }
                    }
                }
            }
        }
    }
)
def get1() -> Item:
    return Item(value="a")

if __name__ == "__main__":
    uvicorn.run(app)

方案二:使用Annotated结合响应模型配置示例(FastAPI 0.99.0+)

通过Annotated包裹返回类型,搭配Response的examples参数定义多示例:

import uvicorn
from fastapi import FastAPI, Response
from pydantic import BaseModel
from typing import Annotated

app = FastAPI()

class Item(BaseModel):
    value: str

# 定义响应示例集合
response_examples = {
    "Normal Example": {
        "summary": "普通示例",
        "value": {"value": "A normal example"}
    },
    "Converted Data Example": {
        "summary": "转换后数据示例",
        "value": {"value": "An example with converted data"}
    },
    "Invalid Data Example": {
        "summary": "无效数据示例(仅展示用)",
        "value": {"value": "Invalid data ..."}
    }
}

@app.get(path="/")
def get1() -> Annotated[Item, Response(examples=response_examples)]:
    return Item(value="a")

if __name__ == "__main__":
    uvicorn.run(app)

关键说明

  • json_schema_extra中的examples仅作用于请求体的Schema定义,不会影响响应体的示例展示。
  • 两种方案均可在API文档的响应区域生成下拉选择框,支持切换查看不同示例内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:35:09