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}