python:Fastapi 请求体-嵌套模型

请求体 - 字段

字段与使用 QueryPath 和 Body 在路径操作函数中声明额外的校验和元数据的方式相同,可以使用 Pydantic 的 Field 在 Pydantic 模型内部声明校验和元数据。

注意点:Field 是直接从 pydantic 导入的,而不是像其他的(QueryPathBody 等)都从 fastapi 导入。

首先导入Field:

from pydantic import Field

其次开始声明模型定义字段:

from pydantic import Field, BaseModel


class Items(BaseModel):
    name: str
    full_name: Optional[str] = Field(None, min_length=2)
    description: Optional[str] = Field(None, max_length=100)
    price: float = Field(..., gt=0)
    gender: str = Field(..., alias="g")
    tax: int = Field(None, title="用于文档中", description="在文档中显示")

注释信息:

  • min_length=2 是设置字段的最小长度
  • max_length=100 是设置字段最大长度
  • gt=0 是大于0 [ ge大于等于、lt小于、le小于等于]
  • alias="g" 是取别名
  • title="用于文档中" 显示在生成的docs文档中
  • description="在文档中显示" 显示在生成的docs文档中

然后开始定义接口:

from typing import Optional
from fastapi import FastAPI
from fastapi import Body
from pydantic import Field, BaseModel


class Items(BaseModel):
    name: str
    full_name: Optional[str] = Field(None, min_length=2)
    description: Optional[str] = Field(None, max_length=100)
    price: float = Field(..., gt=0)
    gender: str = Field(..., alias="g")
    tax: int = Field(None, title="用于文档中", description="在文档中显示")


app = FastAPI()


@app.put("/items/{item_id}")
def read_field(item_id: int, item: Items = Body(..., embed=True)):
    return {"item_id": item_id, "item": item}

然后启动服务:

lifeng@192 fastapiP
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值