• FastAPI 依赖注入系统(一) 简介


    作者:麦克煎蛋   出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢!

    FastAPI有一个强大并且简单易懂的系统:依赖注入系统。

    什么是"依赖注入"

    "依赖注入"首先意味着在程序中我们的代码可以声明一些它必须依赖的项:我们称之为dependencies,也就是依赖项。

    然后,在实际运行中,FastAPI会把所有需要的依赖项提供给你的代码,称之为"注入"依赖项。

    "依赖注入"非常适用于以下使用场景:

    1、业务逻辑复用

    2、共享数据库连接

    3、安全机制、权限校验、角色管理等等

    4、其他使用场景

    所有上述使用场景,借助于"依赖注入"可以明确的提高代码复用,减少代码重复。

    接下来我们看一个非常简单的例子,了解下依赖注入系统是怎么工作的。

    导入 Depends

    from fastapi import Depends, FastAPI

    创建依赖项

    依赖项实际上是一个函数,它接收所有路径操作函数应当接收的函数参数。

    async def common_parameters(q: str = None, skip: int = 0, limit: int = 100):
        return {"q": q, "skip": skip, "limit": limit}

    这里我们可以用async def或者def来声明函数,FastAPI知道怎么来处理。

    声明依赖

    在路径操作函数的参数中使用Depends声明依赖,与使用Body、Query等的方式相同。

    @app.get("/items/")
    async def read_items(commons: dict = Depends(common_parameters)):
      return commons

    Depends仅接收一个函数类型的参数。

    调用依赖项

    当一个新的请求到来的时候,实际调用流程如下:

    1、调用依赖项函数(传递合适的参数)

    2、得到依赖项函数的返回结果

    3、把返回结果传递给路径操作函数中的对应参数

    完整工程实例:

    from fastapi import Depends, FastAPI
    
    app = FastAPI()
    
    
    async def common_parameters(q: str = None, skip: int = 0, limit: int = 100):
        return {"q": q, "skip": skip, "limit": limit}
    
    
    @app.get("/items/")
    async def read_items(commons: dict = Depends(common_parameters)):
        return commons
    
    
    @app.get("/users/")
    async def read_users(commons: dict = Depends(common_parameters)):
        return commons
  • 相关阅读:
    css grid 随笔
    网页“console”输出图文信息
    2017
    自适应css 框架 PURE
    获取去除参数url地址
    微信分享
    video 播放
    手机端 默认字体
    video 手机全屏自动播放
    jquery 获取元素背景图片backgroungImage的url
  • 原文地址:https://www.cnblogs.com/mazhiyong/p/13050551.html
Copyright © 2020-2023  润新知