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" } } ] }