FastAPI 入门教程:13步构建REST API(2026版)

还在用 Flask 写接口?是时候升级了。FastAPI 凭借高性能与自动文档,已成为 2026 年 Python 后端开发者的首选框架。本文带你用 13 个步骤,从零构建一个可投入生产的 REST API。

为什么是 FastAPI?

根据 JetBrains 2026 年初的开发者调研,FastAPI 的满意度高达 87%,超越 Django REST Framework。它基于 Starlette 与 Pydantic,性能直追 Node.js,且自带交互式 API 文档(Swagger UI),无需额外配置。

核心优势:

第一步:环境准备(1-3步)

1. 安装与项目初始化

pip install fastapi uvicorn[standard]
mkdir myapi && cd myapi

2. 编写最小应用

from fastapi import FastAPI
app = FastAPI(title="我的API")

@app.get("/")
def read_root():
    return {"message": "Hello 2026"}

3. 启动服务

uvicorn main:app --reload

访问 http://localhost:8000/docs,你会看到自动生成的交互式文档——这是 Flask 所不具备的杀手锏。

第二步:定义数据模型(4-6步)

4. 使用 Pydantic 建模

以“待办事项”为例,创建 Todo 模型:

from pydantic import BaseModel
from datetime import datetime

class Todo(BaseModel):
    id: int
    title: str
    completed: bool = False
    created_at: datetime = datetime.now()

5. 内存数据库与 CRUD

使用简单列表存储数据,便于学习:

todos_db = []
current_id = 1

@app.post("/todos")
def create_todo(todo: Todo):
    global current_id
    todo.id = current_id
    todos_db.append(todo)
    current_id += 1
    return {"status": "success", "data": todo}

6. 路径参数与查询参数

@app.get("/todos/{todo_id}")
def get_todo(todo_id: int):
    for todo in todos_db:
        if todo.id == todo_id:
            return todo
    return {"error": "Not found"}, 404

第三步:进阶功能(7-10步)

7. 请求体校验与错误处理

FastAPI 会在请求数据不合法时自动返回 422 及详细错误,无需手动写 if 判断。

8. 响应模型过滤

@app.post("/todos", response_model=Todo)
def create_todo(todo: Todo):
    # 自动过滤多余字段,确保输出纯净

9. 依赖注入(实战案例)

假设某接口需 Token 验证:

from fastapi import Depends, Header

def verify_token(authorization: str = Header(...)):
    if authorization != "Bearer my-secret":
        raise HTTPException(status_code=401)

@app.get("/secure-data", dependencies=[Depends(verify_token)])
def get_secure():
    return {"secret": "这是受保护数据"}

10. 异步数据库操作(模拟)

import asyncio

@app.get("/slow-data")
async def read_slow():
    await asyncio.sleep(2)  # 模拟IO
    return {"data": "耗时操作完成"}

第四步:部署与优化(11-13步)

11. 添加 CORS 与中间件

from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(CORSMiddleware, allow_origins=["*"])

12. 环境变量管理

使用 Pydantic Settings:

from pydantic_settings import BaseSettings

class Settings(BaseSettings):
    database_url: str = "sqlite:///test.db"
    debug: bool = True

13. 生产部署(Uvicorn + Gunicorn)

gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker

实用建议与性能数据

行动号召

现在就用 15 分钟 跟着本教程跑通一个本地项目。先创建“待办 API”,再逐步替换你的业务数据。遇到问题可查阅 FastAPI 官方文档。

掌握了 FastAPI,你就掌握了现代 Python 后端开发的核心技能。别等到下一个项目才开始——从今天的这个 API 开始。


免责声明:本文所展示的代码与数据仅供学习参考,不构成任何生产环境部署建议。实际生产中请务必根据业务需求配置认证、数据库连接池、限流与安全防护。因使用本文代码产生的任何直接或间接损失,作者及平台不承担相应责任。2026 年技术栈更新较快,建议读者始终以官方最新文档为准。