码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • FastAPI 学习之路(二十三)用类作为依赖的注入


    简介: FastAPI 学习之路(二十三)用类作为依赖的注入

    我们先看一个简单的demo

    1. from fastapi import FastAPI, Depends
    2. from typing import Optional
    3. app = FastAPI()
    4. fake_db_items = [{"city": "beijing"}, {"city": "shanghai"}, {"city": "guangzhou"}]
    5. class CommonQueryParams:
    6. def __init__(self, desc: Optional[str] = None, skip: int = 0, limit: int = 10):
    7. self.desc = desc
    8. self.skip = skip
    9. self.limit = limit
    10. @app.get("/items")
    11. def read_items(commons: CommonQueryParams = Depends(CommonQueryParams)):
    12. res = {}
    13. if commons.desc:
    14. res.update({"desc": commons.desc})
    15. items = fake_db_items[commons.skip: commons.skip + commons.limit]
    16. res.update({"items": items})
    17. return res
    18. if __name__ == '__main__':
    19. import uvicorn
    20. uvicorn.run("main:app", reload=True, debug=True)

    我们去实现了一个类,然后这个类呢,有初始化方法,我们有介绍,跳过,限制等条件,我们在实现接口的时候,去注入下这个类,我们看下结果;

     那么我们看下,我们当增加下我们注入的类里面需要的参数desc的时候,看下接口返回的

    其实用类实现也没有那么难,有固定的格式。

     我们只需要按照这个格式去实现即可, 我们有两种常用的写法:

    1.commons: CommonQueryParams = Depends(CommonQueryParams)
    2.commons: CommonQueryParams = Depends()

     实现的效果都是一样的。

     方法二的写法更加简单,我们去看下接口文档如何展示的。

    正常也会带着这些选填的参数。

    我们之前文章有分享过选填必填的参数,我们现在的是否也可以使用呢,我们可以看下,我们必须在依赖注入的时候,必须需要参数desc,我们看下是否可以。

    1. from fastapi import FastAPI, Depends
    2. from typing import Optional
    3. app = FastAPI()
    4. fake_db_items = [{"city": "beijing"}, {"city": "shanghai"}, {"city": "guangzhou"}]
    5. class CommonQueryParams:
    6. def __init__(self, desc: str, skip: int = 0, limit: int = 10):
    7. self.desc = desc
    8. self.skip = skip
    9. self.limit = limit
    10. @app.get("/items")
    11. def read_items(commons: CommonQueryParams = Depends(CommonQueryParams)):
    12. res = {}
    13. if commons.desc:
    14. res.update({"desc": commons.desc})
    15. items = fake_db_items[commons.skip: commons.skip + commons.limit]
    16. res.update({"items": items})
    17. return res
    18. if __name__ == '__main__':
    19. import uvicorn
    20. uvicorn.run("main:app", reload=True, debug=True)

     我们看下,我们不填写的时候,是否是给我们返回的异常,我们预期是接口返回异常

     正常填写

     可以正常返回。那么我们用python的类去实现依赖,其实也是很简单的。之前的一些方法都是可以正常的放在类里面去实现的。

  • 相关阅读:
    手机穿戴设备能力共享,提升丰富交互体验
    数据中台建设方案(Word版源文档)
    节省时间,创造价值:人工智能在工作中的实际应用
    京鸿鑫源元宇宙革新探索:开启未来零售新纪元
    零基础程序员想要学好.Net,跟着这7个步骤学习就可以了
    使用 Selenium 实现自动化分页处理与信息提取
    y52.第三章 Kubernetes从入门到精通 -- k8s实战案例(二五)
    【C++】运算符重载案例 - 字符串类 ① ( Visual Studio 中创建 String 类 | 构造函数与析构函数 | 完整代码示例 )
    java计算机毕业设计瀚绅睿茨二人二轮车租赁管理源码+mysql数据库+系统+lw文档+部署
    如何用信号量去实现一个限流器?
  • 原文地址:https://blog.csdn.net/myli_binbin/article/details/126594143
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号