推荐答案
在 FastAPI 中,可以通过在路由处理函数中返回 Response
对象或使用 status_code
参数来设置响应状态码。以下是两种常见的方式:
方式一:使用 status_code
参数
from fastapi import FastAPI, status app = FastAPI() @app.post("/items/", status_code=status.HTTP_201_CREATED) async def create_item(name: str): return {"name": name}
在这个例子中,status_code=status.HTTP_201_CREATED
会将响应的状态码设置为 201
,表示资源已成功创建。
方式二:返回 Response
对象
from fastapi import FastAPI, Response, status app = FastAPI() @app.post("/items/") async def create_item(name: str): return Response(status_code=status.HTTP_201_CREATED, content=f"Item {name} created")
在这个例子中,我们直接返回了一个 Response
对象,并通过 status_code
参数设置了状态码为 201
。
本题详细解读
1. 使用 status_code
参数
status_code
参数是 FastAPI 路由装饰器中的一个可选参数,用于指定该路由处理函数返回的 HTTP 状态码。FastAPI 提供了 fastapi.status
模块,其中包含了常见的 HTTP 状态码常量,如 HTTP_200_OK
、HTTP_201_CREATED
等。
这种方式适用于大多数简单的场景,尤其是当你只需要返回一个 JSON 响应时。
2. 返回 Response
对象
Response
类是 FastAPI 中用于构建 HTTP 响应的核心类。通过返回 Response
对象,你可以完全控制响应的状态码、内容、头信息等。
这种方式适用于需要更复杂响应的场景,比如需要自定义响应头、设置不同的内容类型等。
3. 状态码的选择
在设置状态码时,应根据 HTTP 协议的标准选择合适的代码。例如:
200 OK
:请求成功。201 Created
:资源已成功创建。400 Bad Request
:客户端请求错误。404 Not Found
:请求的资源不存在。500 Internal Server Error
:服务器内部错误。
通过合理使用状态码,可以使 API 的行为更加符合 RESTful 设计原则,并提高 API 的可读性和可维护性。