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

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

前言


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

 

Fields


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


image.png

重点

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

image.png

Query、Path 继承 Param,Param 继承 FieldInfo

image.png

Body 直接继承 FieldInfo

 

简单的栗子


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)


正确传参的请求结果


微信图片_20220515142113.png


校验失败的请求结果


微信图片_20220515142130.png


查看 Swagger API 文档

image.png

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

相关文章
|
网络安全 Windows
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
|
前端开发 中间件 API
FastAPI第二天---参数校验
FastAPI第二天---参数校验
231 0
FastAPI第二天---参数校验
|
Python
FastApi-07-查询参数校验
FastApi-07-查询参数校验
247 0
FastAPI(36)- FastAPI 的元数据配置和文档 URL
FastAPI(36)- FastAPI 的元数据配置和文档 URL
436 0
FastAPI(36)- FastAPI 的元数据配置和文档 URL
FastAPI(22)- Pydantic Model 结合 Union、List 的使用场景
FastAPI(22)- Pydantic Model 结合 Union、List 的使用场景
509 0
FastAPI(22)- Pydantic Model 结合 Union、List 的使用场景
|
JSON API 数据库
FastAPI(19)- Response Model 响应模型 (下)
FastAPI(19)- Response Model 响应模型 (下)
335 0
FastAPI(19)- Response Model 响应模型 (下)
|
JSON API 数据库
FastAPI(19)- Response Model 响应模型 (上)
FastAPI(19)- Response Model 响应模型 (上)
322 0
FastAPI(19)- Response Model 响应模型 (上)
|
IDE API 开发工具
FastAPI(16)- 额外的数据类型
FastAPI(16)- 额外的数据类型
176 0
FastAPI(16)- 额外的数据类型
|
IDE API 开发工具
FastAPI(14)- 路径操作函数参数的类型是一个嵌套 Pydantic Model 的使用场景
FastAPI(14)- 路径操作函数参数的类型是一个嵌套 Pydantic Model 的使用场景
200 0
FastAPI(14)- 路径操作函数参数的类型是一个嵌套 Pydantic Model 的使用场景