![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FastAPI
文章平均质量分 80
空巢青年_rui
好记性不如烂键盘
展开
-
23_请求体--更新数据
FastAPI使用PUT更新数据、使用PATCH更新部分数据。原创 2022-10-24 15:40:54 · 663 阅读 · 0 评论 -
22_JSON兼容编码器
在某些情况下我们可能需要将一种数据类型(如,Pydantic的model)转换成与JSON相兼容的类型(如 dict、list 等)。例如,你想将它存放在数据库中。FastAPI对此提供了一个函数。原创 2022-10-24 15:38:31 · 684 阅读 · 1 评论 -
21_路径操作配置
通过将参数传递给路径操作装饰器,可以轻松地对路径操作进行配置和添加元数据。原创 2022-10-23 11:18:50 · 645 阅读 · 0 评论 -
20_错误处理
在某些情况下,为HTTP错误添加自定义headers是有用的,例如,出于安全等方面的考虑。"X-Error" : "There goes my error" } , # 添加自定义headers) return {我们可以通过Starlette的异常工具添加自定义异常处理器。假设我们有一个自定义异常可能会在我们的代码或我们是用的库中被raise.现在我们想要使用FastAPI全局处理这个异常,那么我们可以通过。...原创 2022-08-31 23:08:19 · 679 阅读 · 0 评论 -
19_请求表单与文件
使用和之前的相同的方式同时创建File和Formstr=Form()#同时定义File和Form参数)return{文件和表单字段将被作为表单数据由用户上传,然后我们在后端路径操作函数中接收。同时,我们也可以将部分文件声明为bytes,另一部分声明为。警告我们可以在一个路径操作中声明多个File和Form参数,但是,不能同时声明要接收JSON的Body字段。因为此时请求体的编码为,而不是。这是HTTP协议的规定,不是FastAPI的问题。...原创 2022-07-24 17:44:38 · 100 阅读 · 0 评论 -
18_请求文件
创建文件(File)参数的方式与之前的Body和Form#定义File参数return{File是直接继承自Form的类,导入File时,实际上是返回特定类的工厂函数。提示声明文件体必须使用File,否则,FastAPI会把该参数当做查询参数或请求体(JSON)参数。文件作为“表单数据”上传。如果把路径操作函数参数的类型声明为bytes,FastAPI将以bytes形式读取和接收文件内容。这种方式把文件的所有内容都储存在内存里,适用于小型文件。不过,很多情况下,UploadFile。...原创 2022-07-24 17:43:40 · 334 阅读 · 0 评论 -
17_表单数据
创建表单(Form)参数的方式和Body,Queryreturn{例如,OAuth2规范的“密码流”模式规定要通过表单字段发送username和password。它要求字段必须命名为username和password,并通过表单字段发送,不能使用JSON。使用Form可以声明与Body(及Query,Path,Cookie)相同的元数据和验证。说明Form是直接继承自Body的类。注意声明表单体要显式使用Form,否则,FastAPI会将参数当做查询参数或请求体(JSON)参数。...原创 2022-07-24 17:41:06 · 462 阅读 · 0 评论 -
16_响应状态码
与指定响应模型的方式相同,我们也可以在以下任意的路径操作中使用注意是「装饰器」方法(get,post等)的一个参数。不像之前的所有参数和请求体,它不属于路径操作函数。参数接收一个表示HTTP状态码的数字。也能够接收一个IntEnum类型,比如Python的http.HTTPStatus。注意一些响应状态码(请参阅下一部分)表示响应没有响应体。FastAPI知道这一点,并将生成表明没有响应体的OpenAPI文档。...原创 2022-07-21 23:11:16 · 124 阅读 · 0 评论 -
15_额外的模型
使用多个Pydantic模型,并针对不同场景自由地继承。如果一个实体(entity)必须能够具有不同的「状态states」,你无需为每个状态的实体定义单独的数据模型。以用户「实体」为例,其状态有包含password、包含password_hash以及不含密码。...原创 2022-07-21 22:55:13 · 1027 阅读 · 0 评论 -
14_响应模型
使用路径操作装饰器的参数来定义响应模型,特别是确保私有数据被过滤掉。使用来仅返回显式设定的值。httpshttps。原创 2022-07-21 22:53:07 · 380 阅读 · 0 评论 -
13_Header参数
Header参数的定义方法和前面的、、参数一样。1. 声明Header参数:和之前一样, 参数第一个值是默认值,后面可以传递所有的额外验证或元数据注解:为了声明headers, 你需要使用, 因为否则参数将被解释为查询参数。 在 , 和 提供的功能之上有一点额外的功能。大多数标准的headers用 “连字符” 分隔,也称为 “减号” ()。但是像 这样的变量在Python中是无效的。因此, 默认情况下, Header 将把参数名称的字符从下划线 () 转换为连字符 () 来提取并记录 head原创 2022-07-12 18:30:24 · 1423 阅读 · 0 评论 -
12_Cookie 参数
Cookie参数的定义和, 参数一样。1. 声明Cookie参数:声明 Cookie 参数的结构和之前声明 Query , Path 参数时相同。第一个值是参数的默认值,同时也可以传递所有验证参数或元数据注解参数:注意:要声明 Cookie参数,需要使用 ,因为否则参数将被解释为查询参数。使用 声明 cookie参数,使用方式与 和 类似。...原创 2022-07-12 18:29:33 · 256 阅读 · 0 评论 -
11_额外数据类型
到目前为止,我们一直在使用常见的数据类型,如:, , , 。但是,我们也可以使用更复杂的数据类型,同时仍能得到之前提到的相同特性:下面是一些可用的其他数据类型:UUID:datetime.datetime:datetime.date:datetime.time:datetime.timedelta:frozenset:bytes:Decimal:可以在这里检查所有有效的pydantic数据类型: Pydantic data types.下面是一个路径操作的示例,其中的参数使用了上面的一些类型。注意,函数中原创 2022-07-12 18:22:50 · 155 阅读 · 0 评论 -
10_声明请求示例数据
我们可以声明在我们的app中可以接受的数据的示例。以下是常用的几种方式:我们可以使用 和 为pydantic 模型声明一个示例 ,如 Pydantic’s docs:Schema customization 所述:这些额外的信息将按原样添加到该模型的输出 JSON Schema 中,并将在 API 文档中使用。当在Pydantic模型中使用 函数时,还可以通过向函数传递任何其他任意参数来为 JSON Schema 声明额外的信息。如,为每个字段增加示例:如图,文档中的每个字段会出现响应的额外信原创 2022-07-12 18:21:14 · 501 阅读 · 0 评论 -
9_请求体-嵌套模型
使用 FastAPI,我们可以定义、校验、记录文档并使用任意深度嵌套的模型(感谢 Pydantic)。可以将一个属性定义为拥有子元素的类型。例如 Python list:这将使成为一个由元素组成的列表。不过这里没有声明其每个元素的类型。在python3.6-3.8,我们可以使用 typing 模块中的 :在python3.9+ 我们可以使用Python的标准 来声明子元素类型:声明带类型参数的列表:为了带有类型参数(内部类型)的类型,如 、、:在python3.9+ 中:在Python3.6-3原创 2022-07-12 18:05:32 · 361 阅读 · 0 评论 -
8_请求体-字段
与使用 、 和 在路径操作函数中声明额外的校验和元数据的方式相同,你可以使用 Pydantic 的 在 Pydantic 模型内部为属性字段声明校验和元数据。2. 声明模型属性:我们可以对模型中的属性使用 :的工作方式和, 和等相同,包括他们的参数等等也完全相同。我们可以在 、、 中声明额外的信息。这些信息将包含在生成的 JSON Schema 中。在文档的后面部分学习声明示例时,会了解到更多有关添加额外信息的知识。我们可以使用 Pydantic 提供的 为模型属性声明额外的校验和元数据。还可原创 2022-07-12 18:04:11 · 149 阅读 · 0 评论 -
7_请求体-多个参数
本章介绍请求体声明的高级用法。首先,毫无疑问,我们可以混合使用 、 和 声明, FastAPI会知道如何处理它们。同样的,我们可以将请求体参数的默认值设置为 来将其声明为是可选的:2. 多个请求体参数:在上面的示例中,路径操作希望有一个具有 的属性的JSON请求体,就像:但是我们也可以声明多个请求体参数,例如 item 和 user:在这种情况下,FastAPI将注意到该函数中有多个请求体参数(两个Pydantic 模型参数)。因此,它将使用参数名称作为请求体中的键(字段名称),并期望一原创 2022-07-12 17:54:47 · 520 阅读 · 0 评论 -
6_路径参数和数值校验
与使用 为查询参数声明更多的校验和元数据的方式相同,我们可以使用FastAPI提供的 为路径参数声明相同类型的校验和元数据。1. 声明元数据: 可以使用与 相同的所有参数。如,为路径参数 声明 元数据:2. 按需对参数排序:假设你想要声明一个必需的 类型查询参数 。而且你不需要为该参数声明任何其他内容,所以实际上你并不需要使用 。但是你仍然需要使用 来声明路径参数 。如果你将带有「默认值」的参数(关键字参数)放在没有「默认值」的参数(位置参数)之前,Python 将会报错。但是你可原创 2022-07-12 17:52:34 · 155 阅读 · 0 评论 -
5_查询参数和字符串校验
FastAPI允许我们为参数声明额外的信息和校验。以下面的程序为例:代码中查询参数 类型为 ,默认值为 ,因此它是可选参数。接下来我们为它添加额外的校验功能。我们打算添加约束条件:即使 是可选的,但是只要提供了该参数,则该参数值长度不能超过 50 个字符。为此,我们需要使用 FastAPI 提供的 类。2. 使用Query作为默认值:现在,将 Query 用作查询参数的默认值,并将它的 参数设置为 50:现在必须使用 替换默认值, Query的第一个参数同样也是用于定义默认值的。所以,原创 2022-07-12 17:50:18 · 493 阅读 · 0 评论 -
4_请求体
在HTTP请求中,如果需要将数据从客户端(如,浏览器)发送给API,则我们会将其作为“请求体(request body)”发送。请求体是客户端发送给API的数据;响应体是API发送给客户端的数据。我们的API几乎总是要返回给用户响应体的,但是客户端并不总是需要发送请求体。在FastAPI中我们使用Pydantic Model来声明请求体,同时能够获得Model所有的能力和优点。首先,我们需要从Pydantic导入 :2. 创建数据模型:然后,将我们需要的数据模型声明为继承自 的类。并使用标准的Pyt原创 2022-07-12 18:09:29 · 2310 阅读 · 0 评论 -
3_查询参数
查询参数(query parameters) 指 URL 中跟在路径参数后,以未开始,使用分割(如果有多个)的键值对形式的参数。如果我们在路径参数函数的形参中定义了不属于路径参数的形参,那么它们将被自动解释为"查询字符串"参数。在上面的代码中,路径为,没有路径参数,所以函数中定义的和就会被认为是查询参数。对应的URL可以是:此时查询参数为:。因为查询参数是URL的一部分,所以他们的原始类型是,不过在函数中,我们声明了他们的类型为 , 所以这两个值会自动转换为 类型并进行校验。应用于路径参数的所有相同过程原创 2022-07-10 20:18:45 · 893 阅读 · 0 评论 -
2_路径参数
路径参数即 URL 中我们用来和路由进行匹配的可变部分,他使用 标识,其中的变量将承载通过URL传递的值,因此也可以称为路径变量。我们可以使用与Python 格式化字符串相同的语法来声明路径 「参数 parameters」或 「变量 variables」:路径参数 的值将会作为参数传递给函数。所以,如果运行并访问URL http://127.0.0.1:8000/items/foo 将会看到如下响应:1. 有类型的路径参数:可以使用标准的Python类型提示来标注函数中的路径参数类型:这样, 将原创 2022-07-10 20:16:40 · 2172 阅读 · 0 评论 -
1_创建并运行最小应用及使用交互性文档
一个最简单的FastAPI应用可能向下面这样::2. 启动应用:FastAPI是一个 Python ASGI web应用开发框架,也就是说我们可以使用它来完成后端API接口逻辑的开发,但是他并不能直接处理 HTTP请求/WebSocket连接。我们需要使用 Uvicorn ASGI web服务器 接收HTTP请求,并将其转换为符合 ASGI规范的格式 再传递给FastAPI处理。请求处理结束后,FastAPI的响应再原路返回到客户端渲染展示给用户。FastAPI使用Uvicorn服务器来提供serve原创 2022-07-10 20:13:30 · 619 阅读 · 0 评论 -
FastAPI 初级教程--用户指南 (持续更新中……)
在前面列举了FastAPI的相关特性和概念以及Python的类型提示后,我们正式进入FastAPI Web开发框架的学习。本篇文章将作为后续文章的目录使用,相关内容会持续更新(但愿如此😂)本部分是FastAPI的基础教程,涵盖了FastAPI使用的各种HTTP概念和特性。在阅读完成后,你基本可以完成一个Web项目的完整开发。之后你可以阅读进阶用户指南,了解更高层出的其他概念,并扩展FastAPI应用。注意: 在使用本教程的过程中,你可能需要使用FastAPI的所有依赖,可以通过 命令安装。原创 2022-07-10 20:20:50 · 526 阅读 · 1 评论 -
Python中的类型提示(Type Hints)及其在FastAPI中的应用
这一章我们来了解Python的类型提示的用法和其在FastAPI、Pydantic中的使用。python在 3.6 版本加入了对 类型提示 的支持,并在之后的版本中不断对其进行了优化。类型提示 type hints 是一种新的语法,用来声明一个变量的类型。通过声明变量的类型,编辑器和一些工具能够为用户提供更好的支持。本章内容知识对于Python类型提示的快速入门/复习,仅涵盖与FastAPI一起使用的部分功能。FastAPI代码库实现了100% 的类型提示,整个FastAPI都基于这些类型提示构建,他带了许原创 2022-07-09 13:21:32 · 884 阅读 · 0 评论 -
最快的Pythonweb框架之一:FastAPI 初探
学习FastAPI 异步 web框架,记录一下,当做笔记。官网:https://fastapi.tiangolo.com/中文官网:https://fastapi.tiangolo.com/zh/项目地址:https://github.com/tiangolo/fastapiFastAPI是一个用于构建API的现代、快速(高性能)的web框架,使用Python3.6+ 版本,并基于Python标准库(typing库)提供的类型提示(type hints)。项目遵循 MIT 许可协议。其关键特........原创 2022-07-08 23:49:22 · 2652 阅读 · 0 评论