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

问题描述 投票:0回答:2

我的 API 只能返回一个文件:

    @router.get(
        "/partners/{partner_id}/rsr-requests/{rsr_request_id}/{document_path}",
        responses={200: {"content": {"application/octet-stream": {}}, "description": "Файл"}}
    )
    async def download_rsr_document(...):
        pass

但在 Swagger UI 中,我可以看到

application/json
仍然存在。如何禁用它?

python swagger fastapi swagger-ui
2个回答
0
投票

docs 中,您可以使用

response_class
参数以及所需的
Response
类型。

    from fastapi import FastAPI
    from fastapi.responses import FileResponse
    
    some_file_path = "large-video-file.mp4"
    app = FastAPI()
    
    
    @app.get("/", response_class=FileResponse)
    async def main():
        return some_file_path

0
投票

由于您的 API 只能返回文件,因此您可以更改 FastAPI 中的默认响应类(即

application/json
),如此答案中所述(另请参阅相关文档)。

示例

from fastapi import FastAPI
from fastapi.responses import FileResponse

some_file_path = "some-file.txt"
app = FastAPI(default_response_class=FileResponse)


@app.get("/")
async def main():
    return FileResponse(some_file_path)

如果您只需要对 API 中的特定端点执行此操作,则可以 在端点装饰器中使用

response_class
参数,如下所示:

@app.get("/", response_class=FileResponse)
async def main():
    #return some_file_path  # this should work as well
    return FileResponse(some_file_path)
© www.soinside.com 2019 - 2024. All rights reserved.