FastAPI 依赖注入

什么是依赖注入?, Depends

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

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

  • 共享业务逻辑(复用相同的代码逻辑)

  • 共享数据库连接

  • 实现安全、验证、角色权限

  • 等……

  • 使用依赖注入,将代码重复最小化。

示例一

# coding: utf8

from fastapi import FastAPI, Depends
from typing import Optional

app = FastAPI()

# 依赖,类似公共组件
async def common_args(
        q: Optional[str] = None,
        skip: int = 0,
        limit: int = 100
    ):
    return {"q": q, "skip": skip, "limit": limit}

@app.get('/items/')
async def get_items(commons: dict = Depends(common_args)):
    return commons

@app.get('/users/')
async def get_users(commons: dict = Depends(common_args)):
    return commons

# # 启动: uvicorn main:app --reload

示例二

嵌套依赖

路径操作装饰器依赖项

  • X-Token 存在且必须等于 token123,

  • Host 存在且必须等于 google.com

全局依赖

  • 比如我们全局都需要校验token

FastAPI 兼容性

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

  • NoSQL 数据库

  • 外部支持库

  • 外部 API

  • 认证和鉴权系统

  • API 使用监控系统

  • 响应数据注入系统

Last updated