from fastapi import FastAPI, Depends
app = FastAPI(title="依赖注入")
'''
依赖注入
- 共享一块相同逻辑的代码块
- 共享数据库连接
- 权限认证,登录状态认证
'''
BOOKS = [{"id": i, "name": f"book{i}", "status": i % 4 != 0} for i in range(1, 11)]
USERS = [{"id": i, "name": f"user{i}", "status": i % 4 != 0} for i in range(1, 11)]
# 定义依赖条件,即定义一个函数(可调用对象即可),函数的形参数我们需要的参数,返回值是三个参数组成的字典
def common_params(page: int = 1, size: int = 2, status: bool = True):
return {
"page": page,
"size": size,
"status": status
}
@app.get("/api/books")
# 在路径函数内使用 `Depends(common_params)`,
# 这样一来FastAPI就知道,`commons`这个字典依赖`common_params`函数的返回值,
# 即`commons`字典就是`common_params`函数的返回值。
def get_books(commons: dict = Depends(common_params)): # 使用依赖条件
page = commons["page"]
size = commons["size"]
status = commons["status"]
books = [b for b in BOOKS if b["status"] == status]
return books[(page - 1) * size:page * size]
@app.get("/api/users")
def get_users(commons: dict = Depends(common_params)):
page = commons["page"]
size = commons["size"]
status = commons["status"]
users = [u for u in USERS if u["status"] == status]
return users[(page - 1) * size:page * size]
标签:status,依赖,FastAPI,30,commons,params,common,page,size
From: https://www.cnblogs.com/leoshi/p/17259349.html