1. 安装 FastAPI 和 Uvicorn
首先,确保你已经安装了 FastAPI 和 Uvicorn。可以使用以下命令进行安装:
bash
pip install fastapi uvicorn
2. 创建 Pydantic 模型
Pydantic 模型用于定义请求体的结构和数据验证。下面是一个示例模型,表示一个商品(Item):
python
python
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
在这个模型中,name
和 price
是必填字段,而 description
和 tax
是可选字段。
3. 创建 FastAPI 应用并定义 POST 路由
接下来,创建一个 FastAPI 应用,并定义一个处理 POST 请求的路由:
python
python
from fastapi import FastAPI
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item
在这个例子中,当向 /items/
发送 POST 请求时,FastAPI 会自动解析请求体中的 JSON 数据,并将其转换为 Item
对象。如果请求体不符合模型的要求,FastAPI 会返回一个错误响应。
4. 启动应用
使用 Uvicorn 启动应用:
css
bash
uvicorn main:app --reload
这里假设你的代码保存在 main.py
文件中。
5. 测试 POST 请求
你可以使用工具如 Postman 或 curl 来测试这个 POST 接口。以下是一个使用 curl 的示例:
json
bash
curl -X POST "http://127.0.0.1:8000/items/" -H "Content-Type: application/json" -d '{"name": "Sample Item", "price": 10.5}'
如果请求成功,你将收到如下响应:
json
json
{
"name": "Sample Item",
"description": null,
"price": 10.5,
"tax": null
}
6. 使用多个参数(可选)
虽然请求只能有一个主体,但你可以通过组合路径参数、查询参数和请求体来处理更多信息。例如:
python
python
@app.post("/users/{user_id}/items/")
async def create_item_for_user(user_id: int, item: Item):
return {"user_id": user_id, "item": item}
在这个例子中,除了请求体中的 item
外,还可以通过路径参数 user_id
来获取用户 ID。
总结
通过以上步骤,你可以轻松地在 FastAPI 中处理 POST 请求的参数。利用 Pydantic 模型,你能够确保传入数据的有效性,并自动生成 API 文档。这使得构建和维护 API 更加高效和可靠。