FastAPI 嵌套模型
Pydantic 模型的每个属性都有一个类型。该类型可以是一个内置的Python类型,也可以是一个模型本身。因此,可以用特定的属性名称、类型和验证来声明嵌套的JSON “对象”。
例子
在下面的例子中,我们构造一个客户模型,其中一个属性是产品模型类。而产品模型又有一个供应商类的属性。
from typing import Tuple
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class supplier(BaseModel):
supplierID:int
supplierName:str
class product(BaseModel):
productID:int
prodname:str
price:int
supp:supplier
class customer(BaseModel):
custID:int
custname:str
prod:Tuple[product]
下面的POST操作装饰器将客户模型的对象渲染为服务器响应。
@app.post('/invoice')
async def getInvoice(c1:customer):
return c1
swagger UI页面显示存在三个模式,对应于三个BaseModel类。
当扩展到显示所有节点时,客户模式看起来是这样的
一个 “/invoice “ 路由的响应例子应该是这样的
{
"custID": 1,
"custname": "Jay",
"prod": [
{
"productID": 1,
"prodname": "LAPTOP",
"price": 40000,
"supp": {
"supplierID": 1,
"supplierName": "Dell"
}
}
]
}