我有一个使用 Python 中的 FastAPI 实现的服务器,并且我通过 POST 请求向服务器发送大数据(~2 GB)。一旦请求在服务器端得到处理,我想向客户端返回 201“已创建”响应。 201 响应应该有一个正文,所以我不应该发送一个空正文的响应 (https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST),但在同时,我不想发回新创建的资源,因为它太大了,并且客户端在 POST 请求时不需要该资源。或者,我很想响应 204“无内容”,但这似乎不是成功 POST 请求的推荐响应。 那么假设发送了 201 响应,响应正文应该是什么,以避免无故发回大量数据?
这是描述我的问题的最小代码,当前返回带有空正文的 201 响应:
from fastapi import FastAPI, HTTPException, Response, status
app = FastAPI()
@app.post("/data", status_code=status.HTTP_201_CREATED)
async def send_data(data, response: Response):
try:
# process data on the server
# ...
pass
except Exception as e:
raise HTTPException(status.HTTP_500_INTERNAL_SERVER_ERROR, e)
return response # response with empty body
https://fastapi.tiangolo.com/reference/response/根据文档,你不能只根据需要设置response.body(或response.content)和response.status_code并返回它