推荐答案
在 FastAPI 中,你可以通过使用 @app 装饰器来匹配不同的请求方法。以下是如何匹配 GET、POST、PUT 和 DELETE 请求的示例:
// www.javascriptcn.com code example
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
@app.post("/items/")
async def create_item(item: dict):
return {"item": item}
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: dict):
return {"item_id": item_id, "item": item}
@app.delete("/items/{item_id}")
async def delete_item(item_id: int):
return {"item_id": item_id}本题详细解读
1. 使用 @app 装饰器匹配请求方法
在 FastAPI 中,@app 装饰器用于定义路由和请求方法。你可以通过以下方式匹配不同的请求方法:
@app.get("/path"):匹配 GET 请求。@app.post("/path"):匹配 POST 请求。@app.put("/path"):匹配 PUT 请求。@app.delete("/path"):匹配 DELETE 请求。
2. 路径参数和请求体
路径参数:在路径中使用
{item_id}这样的占位符来捕获路径参数。例如,@app.get("/items/{item_id}")中的item_id会被捕获并传递给函数。请求体:对于 POST 和 PUT 请求,通常需要传递请求体数据。你可以通过定义一个 Pydantic 模型或直接使用
dict类型来接收请求体数据。
3. 异步处理
FastAPI 支持异步处理请求。你可以使用 async def 来定义异步函数,从而在处理请求时不会阻塞事件循环。
4. 返回值
FastAPI 会自动将函数的返回值转换为 JSON 响应。你可以返回字典、列表、Pydantic 模型等,FastAPI 会自动处理序列化。
5. 示例代码解释
read_item函数处理 GET 请求,返回一个包含item_id的字典。create_item函数处理 POST 请求,返回接收到的item数据。update_item函数处理 PUT 请求,返回更新后的item_id和item数据。delete_item函数处理 DELETE 请求,返回被删除的item_id。
通过这些装饰器,你可以轻松地在 FastAPI 中匹配和处理不同的 HTTP 请求方法。