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

如何在FastAPI的Swagger UI自动文档中禁用application/json

解决Swagger UI中保留默认application/json选项的问题
  • 问题根源:FastAPI会自动为接口推断默认响应类型(比如JSON),仅在responses里配置200状态码的内容类型,不足以覆盖这个默认行为。
  • 解决方案:在路由装饰器中添加response_class参数,明确指定响应类型为文件流相关类型,这样Swagger UI就只会展示你指定的内容类型。

修改后的代码示例(适合直接返回文件场景):

from fastapi import FileResponse

@router.get(
    "/partners/{partner_id}/rsr-requests/{rsr_request_id}/{document_path}",
    responses={200: {"content": {"application/octet-stream": {}}, "description": "Файл"}},
    response_class=FileResponse
)
async def download_rsr_document(...):
    # 示例:返回目标文件的逻辑
    return FileResponse(
        path="目标文件路径",
        media_type="application/octet-stream",
        filename="下载时显示的文件名"
    )

如果是手动读取文件内容构造响应,可使用如下写法:

from fastapi import Response

@router.get(
    "/partners/{partner_id}/rsr-requests/{rsr_request_id}/{document_path}",
    responses={200: {"content": {"application/octet-stream": {}}, "description": "Файл"}},
    response_class=Response
)
async def download_rsr_document(...):
    with open("目标文件路径", "rb") as f:
        file_content = f.read()
    return Response(content=file_content, media_type="application/octet-stream")

添加response_class参数后,FastAPI会明确告知OpenAPI(Swagger UI基于它生成文档)该接口的唯一响应类型是二进制文件流,从而移除默认的application/json选项。

内容的提问来源于stack exchange,提问作者Альберт Александров

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:02:38