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(请求体)