加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
09_BodyFields.py 1.40 KB
一键复制 编辑 原始数据 按行查看 历史
Power9508 提交于 2024-09-24 18:28 . 增加一些示例代码
# Field 是 pydantic 的,用于 pydantic 模型的字段校验,和 Query Path Body 有类似的参数
# 使用 Field:提供了更多的灵活性和控制能力,允许你定义更复杂的校验和元数据。
# 约束:可以为字段添加约束,如 max_length, gt, lt, ge, le 等。例如,在你的示例中,description 的最大长度被限制为 300,price 被限制为大于 0。
# 默认值:可以通过 default 或 default_factory 设置字段的默认值。
# 描述:可以为字段添加描述,以便在自动生成的文档中显示。这有助于 API 使用者理解字段的含义。
# 示例:可以提供字段的示例值,方便文档生成。
#
# 不使用 Field:模型更简单,但功能也有限,通常适用于不需要额外约束的情况。
# 简单声明:直接定义字段时,只有类型信息,没有额外的约束或元数据。
# 缺乏灵活性:不能添加额外的验证逻辑或者描述信息。
from typing import Annotated
from fastapi import Body, FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class Item(BaseModel):
name: str
description: str | None = Field(default=None, max_length=300)
price: float = Field(gt=0)
tax: float | None = None
@app.post("/items/{item_id}")
async def update_item(item_id: int, item: Annotated[Item, Body(embed=True)]):
results = {"item_id": item_id, "item": item}
return results
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化