Pydantic 学习笔记

如果是从java转Python的话  这个包相当于  Validation 请求入参校验的一个功能

Pydantic 的主要优势在于其结合了灵活性和强大的数据处理能力,同时简化了常规的数据校验任务,让开发人员更专注于业务逻辑的实现。它通常用于快速开发中,特别是在构建API、数据交互和设置管理场景中发挥重要作用。

数据校验:

Pydantic 使用模型类(BaseModel 的子类)来定义数据的形状,包括数据类型和可能的额外约束。这些模型用于自动校验传入数据是否符合预期的格式,保证数据的有效性和准确性。

类型转换:

Pydantic 尝试将输入数据转换成声明的数据类型。例如,如果一个模型字段声明为 int 而提供的数据是字符串 “123”,Pydantic 将尝试转换字符串为整数。如果转换成功,则保存这个整数值;如果失败,则抛出一个错误。

数据序列化与反序列化:

Pydantic 模型可以序列化为 JSON 或其他格式的字符串,也可以从 JSON 或字典中反序列化回 Python 对象,使得在不同系统或网络之间传递和处理结构化数据变得简单。

编辑环境和设置管理:

Pydantic 可用于管理应用程序的配置和环境设置。通过创建设置模型,可以轻松读取环境变量并将其转换为合适的数据类型。

生成 JSON Schema:

Pydantic 可以从模型自动生成 JSON Schema,这在创建API文档或使用合适的工具进行前后端交互时非常有用。

模型继承和泛型:

Pydantic 支持模型继承和泛型模型,允许模型之间共享属性和行为,从而避免重复代码,并支持更复杂的数据结构。

开箱即用的校验器:

Pydantic 提供了内建的校验器(如 EmailStr、HttpUrl、conint 等),可以应用于模型字段中,简化了常见数据格式的校验。

自定义校验逻辑:

可以定义自己的校验函数,以校验复杂的数据逻辑,或在数据加载到模型之前/之后执行特定的操作。

优雅的错误处理:

当数据校验失败时,Pydantic 会提供详细的错误报告,直接说明哪个字段出了问题以及问题的性质,便于调试和用户反馈。

继续分析func Body()中每个参数的作用:

default参数是一个Any类型的参数,表示参数的默认取值。当请求中没有提供该参数时,会采用默认值。

embed参数是一个bool类型的参数,用于指示是否嵌入请求体参数。当embed为True时,请求体参数会被嵌入到API文档中,而不是以引用的方式显示。这样可以直接在API文档中查看请求体参数的详细信息,包括参数的类型、描述、默认值等。当embed为False时,默认情况下不会嵌入请求体参数,而是以引用的方式显示。

media_type参数是一个str类型的参数,表示数据的媒体类型,默认为"application/json"。这个参数可以指定数据的格式,例如JSON、XML等。

alias参数是一个Optional[str]类型的参数,表示参数的别名。在文档中显示参数的时候可以使用别名,用于更好地描述参数的含义。

title参数是一个Optional[str]类型的参数,表示参数的标题。在文档中显示参数的时候可以使用标题,用于更好地区分参数。

description参数是一个Optional[str]类型的参数,表示参数的描述。在文档中显示参数的时候可以使用描述,用于详细说明参数的作用和用法。

gt参数是一个Optional[float]类型的参数,表示参数的值必须大于指定值。用于限定参数的取值范围。

ge参数是一个Optional[float]类型的参数,表示参数的值必须大于等于指定值。用于限定参数的取值范围。

lt参数是一个Optional[float]类型的参数,表示参数的值必须小于指定值。用于限定参数的取值范围。

le参数是一个Optional[float]类型的参数,表示参数的值必须小于等于指定值。用于限定参数的取值范围。

min_length参数是一个Optional[int]类型的参数,表示参数值的最小长度。用于限定参数值的长度范围。

max_length参数是一个Optional[int]类型的参数,表示参数值的最大长度。用于限定参数值的长度范围。

regex参数是一个Optional[str]类型的参数,表示参数值必须符合指定的正则表达式。用于对参数值进行正则表达式匹配验证。

**extra参数是一个Any类型的可变关键字参数,用于接收额外的参数信息。可以接收任意数量的额外参数,并将其存储在extra参数中,以便在函数内部进行处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值