在FastAPI框架中,Depends
是一个关键的功能,它允许开发者通过依赖注入来管理和重用代码。这在处理API的分页和过滤逻辑时尤其有用,因为它可以将这些逻辑抽象化,从而减少冗余代码并提高效率。
通过Depends
,我们可以定义一个函数,该函数负责获取和验证分页参数(如skip
和limit
)以及过滤参数(如基于名称或价格的筛选)。
在路由函数中,我们通过Depends
将这些参数作为依赖项注入,FastAPI会在调用路由函数之前自动执行这些依赖函数,并将结果作为参数传递给路由函数。这种方式不仅使代码更加模块化,而且使得参数处理逻辑可以在多个路由中重用,从而简化了API的开发和维护。
在下段 Python 代码中,commons
是一个依赖函数 common_parameters
的结果,它通过 FastAPI 的依赖注入系统被传递给路由处理函数。这里的 Annotated
来自 typing
模块,它用于添加额外的类型信息或元数据到已有的类型上,但在 FastAPI 中,它主要用于添加额外的文档信息到参数上。
from typing import Annotated
from fastapi import Depends, FastAPI
app = FastAPI()
async def common_parameters(q: str | None = None, skip: int = 0, limit: int = 100):
return {
"q": q, "skip": skip, "limit": limit}
@app.get("/items/")
async def read_items(commons: Annotated