fastapi之Pydantic

Pydantic

Pydantic 是一个数据验证和数据解析的 Python 库,它基于 Python 的类型注解进行工作。通过 Pydantic,开发者可以定义数据模型,这些模型能够自动验证和转换输入的数据,确保数据的完整性和类型一致性。Pydantic 广泛用于 FastAPI 和其他需要处理复杂数据结构的 Python 应用中。

基本概念

  1. 数据模型:Pydantic使用数据模型来定义数据的结构和类型。数据模型是通过继承 BaseModel 类来创建的。
  2. 字段定义:在 Pydantic 模型中,字段是通过标准的 Python 类型注解来定义的。这些字段可以是基本数据类型(如 intfloatstr)或更复杂的数据结构(如 ListDictOptional)。
  3. 验证和转换:Pydantic 自动验证传入的数据是否符合模型定义的字段类型,并在可能的情况下自动进行类型转换。如果验证失败,Pydantic 会抛出一个验证错误。

作用

  1. 数据验证:自动验证输入数据的类型和格式,确保数据的正确性。
  2. 数据转换:自动将输入数据转换为指定的数据类型(如将字符串转换为数字)。
  3. 文档生成:Pydantic 的模型可用于生成API文档,帮助开发者理解数据结构和格式。
  4. 减少重复代码:通过统一的模型定义和验证逻辑,减少手动编写数据验证代码的需求。

示例

项目结构

myapp/
│
├── main.py          # 主应用文件
├── models.py        # Pydantic 模型定义
├── requirements.txt # 依赖项
└── README.md        # 项目说明

创建 Pydantic 模型 (models.py)
from pydantic import BaseModel
from typing import Optional

class Item(BaseModel):
    name: str
    price: float
    description: Optional[str] = None
    tax: Optional[float] = 0.0

Item 是一个 Pydantic 模型,定义了一个商品的数据结构。
nameprice 是必需字段,分别为字符串和浮点数。
descriptiontax 是可选字段,description 的默认值为 Nonetax 的默认值为 0.0

创建 FastAPI 应用 (main.py)

from fastapi import FastAPI
from .models import Item

import uvicorn
import os

app = FastAPI()


@app.post("/items/")
def create_item(item: Item):
    """
    创建一个新的商品条目。
    """
    return {"item": item}


if __name__ == "__main__":
    uvicorn.run(
        f"{os.path.basename(__file__).split('.')[0]}:app",
        host="127.0.0.1",
        port=8000,
        reload=True,
    )


  • 在这个 FastAPI 应用中,定义了一个 POST 端点 /items/,它接收一个 Item 类型的请求体。
  • FastAPI 会自动使用 Pydantic 来验证和解析请求中的数据。如果请求的数据不符合 Item 模型的定义,FastAPI 会返回一个详细的错误响应。
  • 如果验证通过,传入的 Item 数据会作为响应返回。
测试
成功

在这里插入图片描述

失败

在这里插入图片描述

完整代码

fastapi之Pydantic

可评论区留言私发。

  • 20
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
FastAPI是一个现代、快速(高性能)的Web框架,用于构建API。它基于Python 3.7+的类型提示和异步支持,提供了简单易用的API开发体验。FastAPI具有以下特点: 1. 快速:FastAPI使用基于Starlette的异步请求处理器,可以处理大量并发请求,并具有出色的性能。 2. 类型提示:FastAPI使用Python的类型提示功能,可以在编译时进行类型检查,并提供自动生成API文档的功能。 3. 自动文档生成:FastAPI可以根据代码中的类型提示和注释自动生成交互式API文档,包括请求和响应模型、参数验证等。 4. 异步支持:FastAPI完全支持异步编程,可以使用async/await语法编写异步代码,提高性能和并发处理能力。 5. 安全性:FastAPI内置了常见的安全功能,如身份验证、授权等,并提供了易于使用的方式来保护API。 6. 数据验证:FastAPI使用Pydantic库进行数据验证和转换,可以自动解析请求数据,并进行类型检查和转换。 7. WebSocket支持:FastAPI支持WebSocket协议,可以轻松地构建实时应用程序。 Pydantic是一个用于数据验证和解析的Python库,它与FastAPI紧密集成。Pydantic提供了一种声明性的方式来定义数据模型,可以自动进行数据验证、类型转换和文档生成。Pydantic具有以下特点: 1. 声明性:Pydantic使用Python的类型提示来定义数据模型,可以在编译时进行类型检查,并提供自动生成文档的功能。 2. 数据验证:Pydantic可以自动验证输入数据的类型、长度、格式等,并提供友好的错误提示。 3. 数据转换:Pydantic可以自动将输入数据转换为指定的类型,如字符串转整数、字符串转日期等。 4. 文档生成:Pydantic可以根据数据模型自动生成文档,包括字段说明、类型信息等。 5. 序列化和反序列化:Pydantic提供了方便的方法来将数据模型转换为JSON、XML等格式,并支持从这些格式解析数据模型。 总结起来,FastAPI是一个快速、现代化的Web框架,而Pydantic是一个用于数据验证和解析的库。它们可以一起使用,提供了简单易用的API开发体验,并自动生成交互式API文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

trust Tomorrow

感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值