首先,确保你已经安装了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