Pydantic:根据需要指定值但输入示例值
Pydantic: Specify value as required yet input example value
我在 FastAPI 中使用 Pydantic,在 OpenAPI 文档中定义。
意识到要根据需要定义一个值,我需要将这些值保持为空,如下所示。
class Item(BaseModel):
name: str
description: str
price: float
tax: float
但是,我想给出一个带有示例值的 JSON,我可以使用以下语法创建它。
class Item(BaseModel):
name: str = "my name"
description: str = "my description"
price: float = 0.234
tax: float = 0.20
但这将使它们呈现为 OpenAPI 文档中不需要的。有什么方法可以根据需要指定它们,然后给出示例值吗?
基于文档 Schema Extra - Example:
您可以这样为您的 BaseModel
声明额外的 Config.schema_extra
:
class Item(BaseModel):
name: str
description: str
price: float
tax: float
class Config:
schema_extra = {
"example": {
"name": "my name",
"description": "my description",
"price": 0.234,
"tax": 0.20
}
}
或用pydantic.Field
显式声明:
from pydantic import BaseModel, Field
class Item(BaseModel):
name: str = Field(..., example="my name")
description: str = Field(..., example="my description")
price: float = Field(..., example=0.234)
tax: float = Field(..., example=0.20)
我在 FastAPI 中使用 Pydantic,在 OpenAPI 文档中定义。 意识到要根据需要定义一个值,我需要将这些值保持为空,如下所示。
class Item(BaseModel):
name: str
description: str
price: float
tax: float
但是,我想给出一个带有示例值的 JSON,我可以使用以下语法创建它。
class Item(BaseModel):
name: str = "my name"
description: str = "my description"
price: float = 0.234
tax: float = 0.20
但这将使它们呈现为 OpenAPI 文档中不需要的。有什么方法可以根据需要指定它们,然后给出示例值吗?
基于文档 Schema Extra - Example:
您可以这样为您的 BaseModel
声明额外的 Config.schema_extra
:
class Item(BaseModel):
name: str
description: str
price: float
tax: float
class Config:
schema_extra = {
"example": {
"name": "my name",
"description": "my description",
"price": 0.234,
"tax": 0.20
}
}
或用pydantic.Field
显式声明:
from pydantic import BaseModel, Field
class Item(BaseModel):
name: str = Field(..., example="my name")
description: str = Field(..., example="my description")
price: float = Field(..., example=0.234)
tax: float = Field(..., example=0.20)