摘要: 什么是 Context Manager 上下文管理器 在 Python 中,是可以在 with 语句中使用的任何 Python 对象,比如通过 with 来读取文件 with open("./somefile.txt") as f: contents = f.read() print(content 阅读全文
posted @ 2021-09-25 16:23 小菠萝测试笔记 阅读(540) 评论(0) 推荐(0) 编辑
摘要: 背景 FastAPI 支持在依赖项返回后执行一些额外的步骤 但需要用 yield 代替 return 来达到这一目的 版本要求 为了达到上述效果,需要使用 Python 3.7+ 或者在 Python 3.6 中安装 backports pip install async-exit-stack as 阅读全文
posted @ 2021-09-25 15:59 小菠萝测试笔记 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 背景 对于某些实际应用场景,希望向整个应用程序添加一个全局依赖项 FastAPI 类的 dependences 参数 dependences 类型指定为 Optional[Sequence[Depends]] Sequence 是序列,不仅可以接收 List,还可以接收 Set、Tuple 等 子类 阅读全文
posted @ 2021-09-25 14:23 小菠萝测试笔记 阅读(494) 评论(0) 推荐(0) 编辑
摘要: 背景 在某些实际场景中,并不需要使用依赖项的返回值,或者依赖项没有返回值,但仍需要执行这个依赖项 针对这种场景,可以向路径操作装饰器的 dependencies 参数传入依赖项,而不使用 Depends() dependences 参数 dependences 类型指定为 Optional[Sequ 阅读全文
posted @ 2021-09-25 13:44 小菠萝测试笔记 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 子依赖 就是嵌套依赖,和嵌套 Pydantic Model 差不多意思 可以根据需求创建多层嵌套的依赖关系 比如上图,E 依赖 C、D,C、D 又依赖 B,B 又依赖 A..... 两层依赖的栗子 第一层依赖 from typing import Optional # 1、第一层依赖 def que 阅读全文
posted @ 2021-09-25 11:52 小菠萝测试笔记 阅读(351) 评论(0) 推荐(0) 编辑
摘要: FastAPI 的依赖注入 FastAPI 有一个非常强大但直观的依赖注入系统 它被设计为非常易于使用,并且使任何开发人员都可以非常轻松地将其他组件与 FastAPI 集成 什么是依赖注入 在编程中,为保证代码成功运行,先导入或声明其所需要的【依赖】,如子函数、数据库连接等等 将依赖项的返回值注入到 阅读全文
posted @ 2021-09-25 10:19 小菠萝测试笔记 阅读(1393) 评论(0) 推荐(0) 编辑
摘要: 依赖项函数返回 dict 上一篇依赖注入文章中讲的依赖项函数返回值类型是 dict #!usr/bin/env python # -*- coding:utf-8 _*- """ # author: 小菠萝测试笔记 # blog: https://www.cnblogs.com/poloyy/ # 阅读全文
posted @ 2021-09-25 10:19 小菠萝测试笔记 阅读(493) 评论(0) 推荐(0) 编辑
摘要: jsonable_encoder 在实际应用场景中,可能需要将数据类型(如:Pydantic 模型)转换为与 JSON 兼容的类型(如:字典、列表) 比如:需要将数据存储在数据库中 为此,FastAPI 提供了一个 jsonable_encoder() 函数 jsonable_encoder 实际上 阅读全文
posted @ 2021-09-25 10:18 小菠萝测试笔记 阅读(1290) 评论(0) 推荐(0) 编辑
摘要: 前言 许多情况下,需要向客户端返回一些特定的错误,比如 客户端没有足够的权限进行该操作 客户端无权访问该资源 客户端尝试访问的项目不存在 HTTPException 介绍 要将带有错误的 HTTP 响应(状态码和响应信息)返回给客户端,需要使用 HTTPException HTTPException 阅读全文
posted @ 2021-09-25 10:17 小菠萝测试笔记 阅读(1756) 评论(0) 推荐(0) 编辑
摘要: 再次声明下,什么是路径操作 @app.get() @app.post() @app.put() @app.delete() ... 这些就是路径操作 那路径操作的配置,其实就是函数参数 为什么要讲配置 可以在 Swagger API 文档中显示这些参数,友好的显示相关信息 来看看有什么配置 resp 阅读全文
posted @ 2021-09-25 10:17 小菠萝测试笔记 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 前言 详解 Form 详解 File 路径函数混合使用 Form、File from fastapi import FastAPI, File, Form, UploadFile app = FastAPI() @app.post("/files/") async def create_file( 阅读全文
posted @ 2021-09-25 10:16 小菠萝测试笔记 阅读(489) 评论(0) 推荐(0) 编辑
摘要: 前言 可以使用 FastAPI 提供的 File 定义客户端要上传的文件 学习 File 前最好先学习 Form:https://www.cnblogs.com/poloyy/p/15311533.html 安装 python-multipart 要用 File,需要先安装这个库 pip insta 阅读全文
posted @ 2021-09-25 10:10 小菠萝测试笔记 阅读(7068) 评论(1) 推荐(0) 编辑
摘要: 前言 form-data 表单格式的请求数据其实也是挺常见的 FastAPI 通过 Form 来声明参数需要接收表单数据 安装 python-multipart 要用 Form,需要先安装这个库 pip install python-multipart Form Form 是继承自 Body,所以可 阅读全文
posted @ 2021-09-25 10:10 小菠萝测试笔记 阅读(2608) 评论(0) 推荐(1) 编辑
摘要: 前言 有多个模型,且请求/响应需要声明多个模型的时候,可以根据不同使用场景结合 typing 库里面的 Union、List 来达到目的 Union 作用 联合类型,详细教程 使用 Union 时,建议首先包含具体的类型,然后是不太具体的类型 实际代码 #!usr/bin/env python # 阅读全文
posted @ 2021-09-25 10:09 小菠萝测试笔记 阅读(1338) 评论(0) 推荐(0) 编辑
摘要: 前言 在一个完整的应用程序中,通常会有很多个相关模型,比如 请求模型需要有 password 响应模型不应该有 password 数据库模型可能需要一个 hash 加密过的 password 多个模型的栗子 需求 注册功能 请求输入密码 响应不需要输出密码 数据库存储加密后的密码 实际代码 #!us 阅读全文
posted @ 2021-09-25 10:08 小菠萝测试笔记 阅读(456) 评论(0) 推荐(0) 编辑
摘要: 前言 和指定响应模型一样,可以在任何路径操作中添加参数 status_code,用于声明响应的 HTTP 状态码 @app.get() @app.post() @app.put() @app.delete() 最简单的栗子 #!usr/bin/env python # -*- coding:utf- 阅读全文
posted @ 2021-09-25 10:08 小菠萝测试笔记 阅读(570) 评论(0) 推荐(0) 编辑
摘要: 前言 前面文章写的这么多路径函数最终 return 的都是自定义结构的字典 FastAPI 提供了 response_model 参数,声明 return 响应体的模型 什么是路径操作、路径函数 # 路径操作 @app.post("/items/", response_model=Item) # 路 阅读全文
posted @ 2021-09-25 10:08 小菠萝测试笔记 阅读(2047) 评论(0) 推荐(0) 编辑
摘要: 查看一个接口的 Header 进到某个网站,右键检查元素;或者直接 F12 找到 Network,选择一个请求,就能看到 Request Header、Response Header 啦 FastAPI 提供的 Header Header 是 Path、Query、Cookie 的“姐妹”类 它也继 阅读全文
posted @ 2021-09-25 10:07 小菠萝测试笔记 阅读(2845) 评论(0) 推荐(0) 编辑
摘要: 查看一个网站的 Cookies 进到某个网站,右键检查元素;或者直接 F12 找到 Application-Cookies 就能看到啦 FastAPI 提供的 Cookie Cookie 是 Path 和 Query 的“姐妹”类 它也继承自相同的通用 Param 类 注意:从 fastapi 导入 阅读全文
posted @ 2021-09-25 10:07 小菠萝测试笔记 阅读(1675) 评论(0) 推荐(0) 编辑
摘要: 常见的数据类型 int float str bool 但 FastAPI 支持使用更复杂的数据类型 仍然能得到 FastAPI 的支持 IDE 智能提示 请求数据的数据类型转换 响应数据的数据类型转换 数据验证 自动注释和文档 复杂的数据类型 UUID 常见的唯一标识符 str 类型 datetim 阅读全文
posted @ 2021-09-25 10:07 小菠萝测试笔记 阅读(323) 评论(0) 推荐(0) 编辑