FastAPI 是一个快速(Fast)且易于使用的 Web 框架,基于 Python 3.7+ 并且完全兼容标准的 Python 类型提示。
1. 准备工作
首先,确保你的系统中已经安装了 Python 3.7 或更高版本。然后,使用 pip 安装 FastAPI 和 uvicorn(用于运行 FastAPI 应用的 ASGI 服务器):
pip install fastapi uvicorn
2. 创建一个简单的 FastAPI 应用
创建一个名为 main.py
的 Python 文件,并添加以下代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello, World"}
以上代码创建了一个名为 app
的 FastAPI 应用,并定义了一个根路由 /
,当收到 GET 请求时,返回一个包含 "Hello, World" 的 JSON 响应。
3. 运行 FastAPI 应用
使用UVicorn服务器来运行FastAPI应用。在命令行中执行以下命令:
uvicorn main:app --reload
这将启动一个开发服务器,监听在 http://localhost:8000
。你可以在浏览器中访问这个地址,或使用 curl 或任何其他 HTTP 客户端工具来测试 API。
4. 添加更多的路由和功能
现在来添加一些更复杂的路由和功能。例如,假设想要创建一个路由来接收 POST 请求,并返回接收到的数据。修改 main.py
文件如下:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
@app.post("/items/")
async def create_item(item: Item):
if item.price <= 0:
raise HTTPException(status_code=400, detail="价格不能为负数")
total_price = item.price + (item.tax or 0)
return {"name": item.name, "total_price": total_price}
在这里,定义了一个名为 item
的 Pydantic 模型,用于验证和解析 POST 请求中的 JSON 数据。然后,我们创建了一个路由 /items/
,接收一个类型为 item
的参数,并返回包含项目名称和总价格的 JSON 响应。
5. 测试 API
现在,使用 curl 或任何其他 HTTP 客户端工具来测试你的 API。例如,使用 curl 发送一个 POST 请求:
curl -X POST "http://localhost:8000/items/" -H "Content-Type: application/json" -d '{"name": "笔记本电脑", "description": "一台新的笔记本电脑", "price": 1000, "tax": 0.1}'
响应:
{"name": "笔记本电脑", "total_price": 1100.0}