• FastAPI 学习之路(二十二)依赖项


    FastAPI 提供了简单易用,但功能强大的依赖注入系统。这个依赖系统设计的简单易用,可以让开发人员轻松地把组件集成至 FastAPI。

    什么是依赖注入

             声明代码(本文中为路径操作函数 )运行所需的,或要使用的「依赖」的一种方式。

    然后,由系统(本文中为 FastAPI)负责执行任意需要的逻辑,为代码提供这些依赖(注入依赖项)。

    依赖注入常用于以下场景:

    • 共享业务逻辑(复用相同的代码逻辑)
    • 共享数据库连接
    • 实现安全、验证、角色权限
    • 等……

    上述场景均可以使用依赖注入,将代码重复最小化。

    接下来,我们学习一个非常简单的例子,尽管它过于简单,不过很实用。

    1. from fastapi import FastAPI, Depends
    2. from typing import Optional
    3. app = FastAPI()
    4. def common_params(q: Optional[str] = None, skip: int = 0, limit: int = 10):
    5. return {"q": q, "skip": skip, "limit": limit}
    6. @app.get("/items")
    7. def read_items(commons: dict = Depends(common_params)):
    8. return commons
    9. @app.get("/users")
    10. def read_users(commons: dict = Depends(common_params)):
    11. return commons
    12. if __name__ == '__main__':
    13. import uvicorn
    14. uvicorn.run("main:app", reload=True, debug=True)

    我们看下最后的请求

    依赖项函数的形式和结构与路径操作函数一样。

    因此,可以把依赖项当作没有「装饰器」(即,没有 @app.get("/path") )的路径操作函数。

    依赖项可以返回各种内容。

    本例中的依赖项预期接收如下参数:

    • 类型为 str 的可选查询参数 q
    • 类型为 int 的可选查询参数 skip,默认值是 0
    • 类型为 int 的可选查询参数 limit,默认值是 100

    然后,依赖项函数返回包含这些值的 dict。

     接收到新的请求时,FastAPI 执行如下操作:

    • 用正确的参数调用依赖项函数(「可依赖项」)
    • 获取函数返回的结果
    • 把函数返回的结果赋值给路径操作函数的参数  

    FastAPI 兼容性

    依赖注入系统如此简洁的特性,让 FastAPI 可以与下列系统兼容:

    • 关系型数据库
    • NoSQL 数据库
    • 外部支持库
    • 外部 API
    • 认证和鉴权系统
    • API 使用监控系统
    • 响应数据注入系统
  • 相关阅读:
    北斗导航 | RTKLIB 2.4.3 在VS2015下的编译
    Python之Pands数据分析,从0到掌握
    一文详解 requests 库中 json 参数和 data 参数的用法
    Eslint和Prettier
    论文解读(IGSD)《Iterative Graph Self-Distillation》
    Python 最好用的8个VS Code扩展
    linux生产者消费者模型
    数据结构—快速排序(续)
    使用 OpenCV 收集数据
    SpringBoot 自动装配原理
  • 原文地址:https://blog.csdn.net/myli_binbin/article/details/126593904