发送数据: 请求体与 Pydantic
发送数据:请求体与 Pydantic
Section titled “发送数据:请求体与 Pydantic”接收 JSON 数据
Section titled “接收 JSON 数据”当您需要将数据从客户端(如浏览器)发送到您的 API 时,通常以**请求体(Request Body)**的形式发送。最常见的格式是 JSON。要在 FastAPI 中声明请求体,您需要使用 Pydantic 模型。
定义 Pydantic 模型
Section titled “定义 Pydantic 模型”Pydantic 是一个库,它允许您使用 Python 类定义数据的“形状”或模式(schema)。您定义一个继承自 BaseModel 的类,并使用标准 Python 类型声明属性。
from typing import Unionfrom fastapi import FastAPIfrom pydantic import BaseModel
class Item(BaseModel): name: str description: Union[str, None] = None price: float is_offer: bool = False
app = FastAPI()在这个 Item 模型中:
name和price是必需的(没有默认值)。description是可选的,默认为None。is_offer是可选的,默认为False。
在端点中使用模型
Section titled “在端点中使用模型”要在您的 API 中接收此数据,请在路径操作函数中将其声明为参数,并使用 Pydantic 模型类作为类型提示(type hint)。
@app.post("/items/")def create_item(item: Item): # FastAPI 将 JSON 请求体转换为一个 'item' 对象 return item当用户向 /items/ 发送 POST 请求时,FastAPI 将自动执行以下操作:
- 将请求体读取为 JSON。
- 转换相应的数据类型(如果需要)。
- 根据
Item模型验证数据。 - 将数据作为
item参数提供给函数。您甚至可以在函数内部获得item.name等属性的代码补全!
自动验证与错误消息
Section titled “自动验证与错误消息”如果客户端发送了无效数据——例如,为 price 字段发送字符串 “twenty”(该字段期望一个浮点数)——FastAPI 将自动返回一个 422 Unprocessable Entity 错误。
响应体将包含清晰的 JSON 指示,精确说明出了什么问题以及在哪里出问题,从而帮助客户端修复其请求,而无需您编写自定义验证逻辑。