fastapi教程翻译(十六):Form Data(表格数据)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fastapi教程翻译(十六):Form Data(表格数据)相关的知识,希望对你有一定的参考价值。

参考技术A

当您需要接收表单字段而不是JSON时,可以使用 Form 。

提示

首先,从 fastapi 中导入 Form :

创建 Form 参数,和之前创建 Body 和 Query 参数的方法一样:

例如,以一种可以使用 OAuth2 规范的方式(称为“密码流”),要求发送“用户名”和“密码”作为表单字段。

使用Form可以声明与Body相同的元数据和验证(以及Query,Path,Cookie)。

说明

html表单( <form> </ form> )将数据发送到服务器的方式通常对该数据使用“特殊”编码,这与JSON不同。

FastAPI 将确保从正确的位置而不是JSON读取数据。

技术细节

如果您想了解有关这些编码和表单字段的更多信息,请转至 the MDN web docs for POST .

警告⚠️

fastapi教程翻译(四):Request Body(请求体)

参考技术A

当您需要将数据从客户端(例如浏览器)发送到API时,可以将其作为 “请求体” 发送。

请求体 是客户端发送到您的API的数据。 响应体 是您的API发送给客户端的数据。

API几乎总是必须发送一个 响应体 ,但是客户端并不需要一直发送 请求体

定义 请求体 ,需要使用 Pydantic 模型

例如,上面的模型 Item 声明了一个 JSON 对象(或Python dict ),例如:

... description 和 tax 属性是可选的(因为有默认值 None ),所以下面这个 JSON 对象也是有效的:

将上面定义的模型添加到你的路径操作中,就和定义Path和Query参数一样的方式:

...声明参数的类型为你创建的模型 Item .

通过那样定义Python 类型为 pydantic 的 model , FastAPI 将会:

模型的 JSON Schema 将成为OpenAPI生成模式的一部分,并将显示在交互式API文档中:

并且还将在需要它们的每个路径操作的API文档中使用:

在你的编辑器中,编写的函数中,你将会获得类型提示和补全:

您也会获得类型操作错误检查:

Pydantic 本身甚至进行了一些更改以支持此操作。

但是您可以通过 PyCharm 和大多数其他Python编辑器获得相同的编辑器支持:

在函数内部,您可以直接访问模型对象的所有属性:

你可以同时定义 Path参数 和 请求体参数 .

你可以同时定义 Path参数 、 Query参数 和 请求体参数 .

** FastAPI **将识别它们中的每一个并从正确的位置获取数据。

以上是关于fastapi教程翻译(十六):Form Data(表格数据)的主要内容,如果未能解决你的问题,请参考以下文章

fastapi教程翻译(四):Request Body(请求体)

FastAPI - 格式错误的十六进制 UUID 字符串

17.FastAPI 表单数据

FastAPI 等效于 Flask 的 request.form,用于不可知的表单

FastAPI Web框架 [1.9]

FastAPI Web框架 [1.9]