FastAPI(30)- Classes as Dependencies 类依赖注入 (下)

简介: FastAPI(30)- Classes as Dependencies 类依赖注入 (下)

查看 Swagger API 文档

image.png

请求结果

image.png

依赖类的 __int__ 方法有参数的类型是 Dict、List 的栗子


from typing import List, Dict, Any, Optional
from fastapi import Depends
from fastapi.encoders import jsonable_encoder
# 依赖类
class DictListClass:
    def __init__(self,
                 *,
                 name: str,
                 address: Optional[List[str]] = None,
                 info: Optional[Dict[str, Any]] = None,
                 ext: Optional[List[Dict[str, Any]]] = None
                 ):
        self.name = name
        self.address = address
        self.info = info
        self.ext = ext
    # 实例方法
    def test(self):
        self.info.update({"test_func": "调用方法添加的键值对"})
@app.get("/items3")
async def read_items(
        # 用第一种推荐写法来声明依赖项
        commons: DictListClass = Depends()
):
    # 打印下看看 commons 是什么
    print(commons, type(commons))
    # 调用实例方法
    commons.test()
    commons = jsonable_encoder(commons)
    # 打印转换后的 commons 是什么
    print(commons, type(commons))
    return {"commons": commons}


查看 Swagger API 文档

image.png

正确传参的请求结果

微信图片_20220515151740.png


请求后,查看控制台输出

<26_class_dependency.DictListClass object at 0x10d20ff40> <class'26_class_dependency.DictListClass'>

{'name': '小菠萝', 'address': ['广州', '深圳'], 'info': {'age': 24, 'test_func': '调用方法添加的键值对'}, 'ext': [{'sex': 'girl'}, {'phone': 135012121212}]} <class'dict'>

  • 可以看到转换前,commons 就是一个 DictListClass 类实例对象
  • jsonable_encoder 转换后的 commons 就是一个 dict(jsonable_encoder 真是强大)

 

用 commons: DictListClass = Depends() 声明依赖后的代码提示

不仅代码优雅简洁一点,而且仍然有 IDE 代码提示

image.png

相关文章
|
安全 数据库连接
FastApi-20-依赖注入
FastApi-20-依赖注入
230 0
|
关系型数据库 MySQL 数据库连接
FastAPI(34)- Dependencies with yield 依赖项中使用 yield
FastAPI(34)- Dependencies with yield 依赖项中使用 yield
210 0
FastAPI(34)- Dependencies with yield 依赖项中使用 yield
FastAPI(33)- Global Dependencies 全局依赖
FastAPI(33)- Global Dependencies 全局依赖
299 0
FastAPI(33)- Global Dependencies 全局依赖
FastAPI(32)- Dependencies in path operation 通过路径操作装饰器的 dependencies 参数声明依赖
FastAPI(32)- Dependencies in path operation 通过路径操作装饰器的 dependencies 参数声明依赖
141 0
FastAPI(32)- Dependencies in path operation 通过路径操作装饰器的 dependencies 参数声明依赖
|
IDE API 开发工具
FastAPI(30)- Classes as Dependencies 类依赖注入 (上)
FastAPI(30)- Classes as Dependencies 类依赖注入 (上)
219 0
FastAPI(30)- Classes as Dependencies 类依赖注入 (上)
|
NoSQL 关系型数据库 数据库连接
FastAPI(29)- Dependencies 依赖注入的初步使用
FastAPI(29)- Dependencies 依赖注入的初步使用
403 0
FastAPI(29)- Dependencies 依赖注入的初步使用
|
Python
FastAPI 学习之路(二十三)用类作为依赖的注入
FastAPI 学习之路(二十三)用类作为依赖的注入
FastAPI 学习之路(二十三)用类作为依赖的注入
|
缓存
fastapi 路径依赖项Depends / 装饰器依赖dependencies / 全局依赖 / 带 yield 的依赖
fastapi 路径依赖项Depends / 装饰器依赖dependencies / 全局依赖 / 带 yield 的依赖
412 0
fastapi 路径依赖项Depends / 装饰器依赖dependencies / 全局依赖 / 带 yield 的依赖
|
NoSQL 测试技术 Redis
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
|
测试技术 数据安全/隐私保护
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)