FastAPI:通过未设置可选项来排除在pydantic.BaseModel中创建的JSON
在本文中,我们将介绍如何使用FastAPI框架创建基于pydantic.BaseModel的JSON,并且可以排除未设置的可选项。
阅读更多:FastAPI 教程
什么是FastAPI和pydantic.BaseModel?
FastAPI是一个用于构建Web API的现代、快速(高性能)的Web框架,它使用类型提示(Type Hints)来实现强类型约束和自动文档生成。而pydantic是FastAPI默认使用的数据模型验证和解析库,它基于Python的类型提示,并提供了许多强大的特性,例如自动验证、数据转换和文档生成等。
创建JSON
使用FastAPI和pydantic.BaseModel创建JSON非常简单。首先,我们需要安装FastAPI和pydantic:
pip install fastapi
pip install pydantic
然后,我们可以定义一个继承自pydantic.BaseModel
的数据模型类,用于定义我们的JSON数据结构。在这个类中,我们可以使用pydantic的字段类型来指定每个字段的类型,并可以选择性地指定是否为可选字段。例如,我们定义了一个包含名称和年龄的用户模型:
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
email: Optional[str] = None
在这个例子中,name
和age
被定义为必填字段,而email
是可选字段,因为它被设置为None。当我们创建一个User对象时,所有的字段都必须进行验证。
user_data = {
"name": "Alice",
"age": 25
}
user = User(**user_data)
现在我们已经创建了一个有效的User对象,并且可以访问每个字段的值:
print(user.name) # 输出:Alice
print(user.age) # 输出:25
print(user.email) # 输出:None
排除未设置的可选项
通常情况下,当我们使用FastAPI处理POST请求时,用户并不总是提供每个可选字段的值。为了排除未设置的可选项,我们可以在模型类中使用exclude_unset=True
参数。例如:
from typing import Optional
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
email: Optional[str] = None
class Config:
orm_mode = True
allow_population_by_field_name = True
exclude_unset = True
现在,当我们创建一个User对象时,未设置的可选项将被排除:
user_data = {
"name": "Bob",
"age": 30
}
user = User(**user_data)
print(user.dict()) # 输出:{"name": "Bob", "age": 30}
在这个例子中,由于我们没有提供email
字段的值,它将被排除在生成的JSON中。
总结
通过使用FastAPI和pydantic,我们可以轻松创建基于pydantic.BaseModel的JSON,并且可以通过设置exclude_unset=True
参数来排除未设置的可选项。这使得我们的API更加灵活和简洁,同时仍保持了强类型和数据验证的特性。希望这篇文章对你学习FastAPI和pydantic有所帮助!