前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >FastAPI(13)- 详解 Fields,针对 Pydantic Model 内部字段添加额外校验和元数据

FastAPI(13)- 详解 Fields,针对 Pydantic Model 内部字段添加额外校验和元数据

作者头像
小菠萝测试笔记
发布2021-09-27 15:46:56
发布2021-09-27 15:46:56
3.1K00
代码可运行
举报
运行总次数:0
代码可运行

前言

  • 前面讲了 Query、Path、Body,均可以对某个字段进行额外的校验和添加元数据
  • 这一篇来讲 Fields,它针对 Pydantic Model 内部字段进行额外的校验和添加元数据

Fields

  • 它是 Pydantic 提供的方法,并不是 FastAPi 提供的哦
  • 该方法返回了一个实例对象,是 Pydantic 中 FieldInfo 类的实例对象
重点

FastAPI 提供的 Query、Path等其他公共 Param 类和 Body 类,都是 Pydantic 的 FieldInfo 类的子类

Query、Path 继承 Param,Param 继承 FieldInfo

Body 直接继承 FieldInfo

简单的栗子

代码语言:javascript
代码运行次数:0
运行
复制
from typing import Optional

import uvicorn
from fastapi import FastAPI, Body
from pydantic import Field, BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    description: Optional[str] = Field(
        default=None,
        title="标题",
        description="描述",
        max_length=5
    )
    price: float = Field(..., gt=0, description="需要大于0")
    tax: Optional[float] = None


@app.post("/items/{item_id}")
async def update_item(item_id: int, item: Item = Body(..., embed=True)):
    results = {"item_id": item_id, "item": item}
    return results


if __name__ == "__main__":
    uvicorn.run(app="11_fields:app", host="127.0.0.1", port=8080, reload=True, debug=True)
正确传参的请求结果
校验失败的请求结果
查看 Swagger API 文档

JSON Schema 对加了 Fields 的字段会有详细的描述

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Fields
    • 重点
  • 简单的栗子
    • 正确传参的请求结果
    • 校验失败的请求结果
    • 查看 Swagger API 文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档