首页 > 其他分享 >[FastAPI=30]依赖注入

[FastAPI=30]依赖注入

时间:2023-03-26 20:12:34浏览次数:38  
标签:status 依赖 FastAPI 30 commons params common page size

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

相关文章

  • [FastAPI-29]用户注册API-File字段需要在 Form之前
    importtypingfromfastapiimportFastAPI,Form,File,UploadFilefrompydanticimportBaseModelapp=FastAPI(title="注册接口")'''1.需要输入账号密码头......
  • [FastAPI-28]上传多个文件
    importtypingfromfastapiimportFastAPI,File,UploadFileapp=FastAPI(title="Form表单")'''上传多个文件'''@app.post("/files",summary="通过内存缓存上......
  • [FastAPI-27]上传文件为可选项
    importtypingfromfastapiimportFastAPI,File,UploadFileapp=FastAPI(title="Form表单")'''上传文件为可选项'''@app.post("/upload_large_file",summa......
  • Acer暗影骑士RTX3060 显卡最大功率95W笔记
    Acer暗影骑士RTX3060显卡默认85W,网上未见有人发过提高功率教程,自己摸索真机试了下说明:本文是本人亲测成功,型号暗影骑士NitroAN515-55,配置为Inteli710750+RTX3060,若是......
  • 创建镜像发布到镜像仓库【不依赖docker环境】
    image工具背景如今,docker镜像常用于工具的分发,demo的演示,第一步就是得创建docker镜像。一般入门都会安装docker,然后用dockerFile来创建镜像,除此以外你还想过有更高效......
  • ingress 出现302 问题
    ingress转发到一个pod时,请求全部为200,增加到两个pod时,返回码出现302.从ingressnginxpod上看,没有rewrite配置,通过日志查看确实302问题。基本上就是session或者co......
  • 产品原型1-20230320
          ......
  • 产品原型2-20230321
          ......
  • 日报30
    本节我们来继续学习Android系统给我们提供的几个原生的Date&Time组件,他们分别是:DatePicker(日期选择器),TimePicker(时间选择器),CalendarView(日期视图),好吧,其实一开始让我扣这......
  • java学习日记20230325-接口
    接口基本介绍 接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。    如果一个类implements,需要将该接口的......