在FastAPI中,你可以使用嵌套的Pydantic模型来处理具有层次结构的请求体。这样你可以定义复杂的数据结构,使代码更具可读性和可维护性。以下是一个演示如何在FastAPI中使用嵌套模型处理请求体的简单示例:

首先,确保你已经安装了FastAPI、uvicorn和pydantic:
pip install fastapi uvicorn pydantic

然后,创建一个名为main.py的文件,输入以下代码:
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

# 创建嵌套的 pydantic 模型
class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None

class Order(BaseModel):
    items: list[Item]
    special_instructions: str = None

# 使用嵌套模型
@app.post("/orders/")
async def create_order(order: Order):
    total_price = sum(item.price + (item.tax or 0) for item in order.items)
    return {"items": order.items, "special_instructions": order.special_instructions, "total_price": total_price}

在这个例子中,我们定义了两个Pydantic模型:Item和Order。Item模型表示订单中的单个物品,而Order模型表示整个订单,其中包含一个items字段,该字段是一个list,每个元素都是Item模型的实例。

你可以使用[httpie](https://httpie.io/)或其他工具来测试这个API。以下是一个使用httpie的示例:
http POST http://127.0.0.1:8000/orders/ items:='[{"name": "Item 1", "price": 10.0}, {"name": "Item 2", "price": 20.0, "tax": 2.5}]' special_instructions="Handle with care"

在这个例子中,我们使用POST请求发送了一个JSON请求体,其中包含items和special_instructions字段。items是一个包含两个Item对象的列表,每个对象都包含name、price和可选的tax字段。FastAPI将自动解析请求体并验证字段,然后在响应中返回相应的信息。




转载请注明出处:http://www.pingtaimeng.com/article/detail/7368/FastAPI