首页 > Windows开发 > 详细

FastAPI系列 什么是依赖注入系统

时间:2021-06-08 09:49:26      阅读:16      评论:0      收藏:0      [点我收藏+]

一、简介

FastAPI有一个非常强大但是直观的依赖注入系统,它被设计成简单易用,开发人员使用它可以很简单的与FastAPI中的其它部分集成。

“依赖注入”意味着在程序中,对于你的代码有一种方式去声明它运行时需要的东西。这个东西就被称为“依赖项”。然后FastAPI将会按照你声明提供的依赖项去做任何需要做的事情。

  通常依赖注入可以:

  • 解决代码重复问题
  • 共享数据库连接
  • 加强安全、认证、角色管理等
  • 其它方面

总之,提高代码的复用率。

二、使用

1、创建依赖

它是一个可以像路径操作函数一样接收所有同样参数的函数。

from typing import Optional
from fastapi import FastAPI

app = FastAPI()


async def common_parameters(q: Optional[str] = None, skip: int = 0, limit: int = 10):
    return {"q": q, "skip": skip, "limit": limit}

2、导入Depends

其它路径操作函数如果需要使用就需要先导入Depends。

from typing import Optional
from fastapi import Depends, FastAPI

app = FastAPI()


async def common_parameters(q: Optional[str] = None, skip: int = 0, limit: int = 10):
    return {"q": q, "skip": skip, "limit": limit}

3、声明依赖

在需要使用上述依赖的路径操作函数中进行声明。

from typing import Optional
from fastapi import Depends, FastAPI

app = FastAPI()


async def common_parameters(q: Optional[str] = None, skip: int = 0, limit: int = 10):
    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

在路径操作声明依赖项的接收参数以及类型dict(依赖项的返回值是dict类型)。Depends接收一个参数common_parameter(依赖项函数,必须是一个类似函数一样),然后这个参数common-parameter将像路径操作函数一样接收所有参数。

上面的工作方式是当一个新的请求到达后:

  • FastAPI会优先调用依赖,将请求参数,比如查询参数q、skip、limit传递给依赖函数
  • 依赖函数如果有返回值,就会将返回值返回到路径操作函数的参数接收项
  • commons就是依赖函数返回值的接收参数

同时“/users/”和“/items/”依赖项都是common_parameters,这样显然提高了代码的复用率。

 

FastAPI系列 什么是依赖注入系统

原文:https://www.cnblogs.com/shenjianping/p/14856746.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!