我的 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
仍然存在。如何禁用它?
在 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
由于您的 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)