初识 FastAPI

一、什么是 FastAPI

FastAPI 是一个现代、高性能的 Python Web 框架,用于构建 API 服务。它基于 Starlette(Web 部分)和 Pydantic(数据验证部分),由 Sebastián Ramírez 于 2018 年底创建并开源。

from fastapi import FastAPI

app = FastAPI()

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

核心特点

特性说明
高性能与 NodeJS、Go 并驾齐驱,是最快的 Python 框架之一
自动文档自动生成 Swagger UI 和 ReDoc 交互式文档
类型提示基于 Python Type Hints,编辑器智能提示友好
数据验证Pydantic 自动验证请求数据,减少 bug
异步支持原生支持 async/await,适合高并发场景
依赖注入强大的 DI 系统,代码解耦更优雅

二、性能对比

根据权威的 TechEmpower Web Framework Benchmarks 测试数据:

框架性能层级说明
FastAPI⭐⭐⭐⭐⭐接近 Go/NodeJS 水平,Python 中最快
Starlette⭐⭐⭐⭐⭐FastAPI 的底层框架,更快但功能更少
Sanic⭐⭐⭐⭐早期异步框架,生态不如 FastAPI
Flask⭐⭐同步框架,高并发场景需配合 Gunicorn
Django全功能但较重,适合传统 Web 应用

结论:纯 API 服务优先选 FastAPI,传统 Web 应用(需要 Admin、ORM、模板)选 Django。


三、FastAPI vs Flask vs Django

对比表格

维度FastAPIFlaskDjango
定位API 优先微框架全栈框架
异步✅ 原生支持❌ 需扩展✅ Django 3.0+ 支持
类型检查✅ 强制❌ 无❌ 无
自动文档✅ Swagger/ReDoc❌ 需手动❌ 需手动
数据验证✅ Pydantic❌ 需手动❌ 需手动
ORM❌ 需集成❌ 需集成✅ 内置 Django ORM
Admin 后台❌ 无❌ 无✅ 内置
学习曲线中等简单较陡
适合场景API/微服务小型应用传统 Web 应用

选择建议

需求:纯 API / 微服务 / 高并发
  → FastAPI ✅

需求:快速原型 / 小型应用 / 学习入门
  → Flask ✅

需求:传统 Web / Admin 后台 / ORM 一体化
  → Django ✅

需求:AI 应用 / 流式响应 / WebSocket
  → FastAPI ✅

四、2026 开发趋势

1. 异步优先

Python 3.10+ 全面拥抱异步生态,asyncio 已成熟:

# 同步代码(阻塞)
def get_user(user_id: int):
    user = db.query(User).filter_by(id=user_id).first()  # 阻塞等待
    return user

# 异步代码(非阻塞)
async def get_user(user_id: int):
    user = await db.get(User, user_id)  # 释放控制权,其他请求可执行
    return user

2. 类型提示普及

Python 3.12+ 类型系统更强大,FastAPI 完美利用:

from typing import Annotated
from fastapi import FastAPI, Query

app = FastAPI()

@app.get("/items/")
async def read_items(
    q: Annotated[str | None, Query(max_length=50)] = None
):
    # q 自动验证:可选、最大长度 50
    return {"q": q}

3. API 优先设计

前后端分离已成主流,API 文档自动化是刚需:

  • Swagger UI:交互式 API 测试界面
  • ReDoc:美观的 API 文档页面
  • OpenAPI:标准化的 API 描述规范

FastAPI 开箱即用,无需额外配置。

4. AI 原生应用

2026 年 AI 应用爆发,FastAPI 天然适合:

from fastapi import FastAPI
from fastapi.responses import StreamingResponse

app = FastAPI()

@app.post("/chat")
async def chat(prompt: str):
    async def generate():
        async for chunk in ai_model.stream(prompt):
            yield f"data: {chunk}\n\n"
    return StreamingResponse(generate(), media_type="text/event-stream")

五、FastAPI 能做什么

典型应用场景

  1. RESTful API 服务

    • 移动端后端
    • 前后端分离项目
    • 微服务架构
  2. AI 应用后端

    • LLM 流式对话
    • 图像生成服务
    • RAG 检索增强
  3. 实时通信

    • WebSocket 聊天室
    • 实时数据推送
    • 在线协作工具
  4. 数据处理服务

    • ETL 管道
    • 数据清洗 API
    • 文件处理服务

六、安装与快速体验

# 安装 FastAPI 和 ASGI 服务器
pip install fastapi uvicorn[standard]

# 或使用 pipenv
pipenv install fastapi uvicorn[standard]

创建 main.py

from fastapi import FastAPI

app = FastAPI(
    title="My API",
    description="我的第一个 FastAPI 项目",
    version="1.0.0"
)

@app.get("/")
async def root():
    return {"message": "Hello, FastAPI!"}

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}

运行服务:

uvicorn main:app --reload

访问:


七、小结

要点内容
FastAPI 是什么现代、高性能、异步优先的 Python Web 框架
核心优势高性能、自动文档、类型安全、数据验证
适合场景API 服务、AI 应用、高并发后端
2026 趋势异步优先、类型提示、API 优先、AI 原生