推荐答案
在 FastAPI 中,路径操作函数是通过使用 HTTP 方法装饰器来定义的。常见的 HTTP 方法包括 GET、POST、PUT、DELETE 等。以下是一个简单的示例:
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id}在这个示例中,@app.get("/items/{item_id}") 定义了一个处理 GET 请求的路径操作函数。路径参数 item_id 会自动传递给函数 read_item,并且 FastAPI 会自动处理类型转换和验证。
本题详细解读
1. 路径操作函数的基本结构
路径操作函数是 FastAPI 中处理 HTTP 请求的核心部分。它们通常通过装饰器与特定的 HTTP 方法和路径绑定。例如:
@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id}@app.get("/items/{item_id}"):这是一个装饰器,表示这个函数将处理/items/{item_id}路径的 GET 请求。item_id: int:这是一个路径参数,FastAPI 会自动将其转换为整数类型。return {"item_id": item_id}:函数返回一个 JSON 响应。
2. 支持的 HTTP 方法
FastAPI 支持多种 HTTP 方法,常用的包括:
@app.get():处理 GET 请求。@app.post():处理 POST 请求。@app.put():处理 PUT 请求。@app.delete():处理 DELETE 请求。
3. 路径参数和查询参数
路径参数:路径参数是 URL 路径的一部分,通常用于标识资源。例如,
/items/{item_id}中的item_id就是一个路径参数。@app.get("/items/{item_id}") def read_item(item_id: int): return {"item_id": item_id}查询参数:查询参数是 URL 中
?后面的部分,通常用于过滤或排序。例如,/items/?skip=0&limit=10中的skip和limit就是查询参数。@app.get("/items/") def read_items(skip: int = 0, limit: int = 10): return {"skip": skip, "limit": limit}
4. 请求体和响应模型
FastAPI 还支持定义请求体和响应模型,以便更好地处理复杂的数据结构。
请求体:使用 Pydantic 模型定义请求体。
// www.javascriptcn.com code example from pydantic import BaseModel class Item(BaseModel): name: str description: str = None price: float tax: float = None @app.post("/items/") def create_item(item: Item): return item响应模型:使用
response_model参数定义响应模型。@app.post("/items/", response_model=Item) def create_item(item: Item): return item
5. 异步支持
FastAPI 支持异步路径操作函数,只需在函数定义前加上 async 关键字。
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}6. 依赖注入
FastAPI 支持依赖注入,可以将依赖项注入到路径操作函数中。
from fastapi import Depends
def common_parameters(q: str = None, skip: int = 0, limit: int = 100):
return {"q": q, "skip": skip, "limit": limit}
@app.get("/items/")
def read_items(commons: dict = Depends(common_parameters)):
return commons通过以上方式,你可以在 FastAPI 中定义路径操作函数,处理各种 HTTP 请求,并利用 FastAPI 的强大功能来简化开发。