跳到主要内容

FastAPI 教程

FastAPI 是一个现代、高性能的 Python Web 框架,专为构建 API 而设计。它基于 Python 类型提示,提供自动化的数据验证、序列化和 API 文档生成。

什么是 FastAPI?

FastAPI 是一个用于构建 API 的现代、快速(高性能)的 Python Web 框架。它的核心理念是:

  • 快速:性能极高,与 NodeJS 和 Go 相当
  • 快速编码:开发效率提升约 200%-300%
  • 更少 Bug:减少约 40% 的人为错误
  • 直观:优秀的编辑器支持,自动补全随处可见
  • 简单:易于学习和使用
  • 健壮:自动生成交互式文档

核心特性

基于开放标准

  • OpenAPI:自动生成 OpenAPI 规范(原 Swagger)
  • JSON Schema:自动生成数据模型文档
  • 多语言客户端生成:基于 OpenAPI 规范自动生成客户端代码

自动文档

from fastapi import FastAPI

app = FastAPI()

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

运行后访问:

  • http://127.0.0.1:8000/docs - Swagger UI 交互式文档
  • http://127.0.0.1:8000/redoc - ReDoc 替代文档

类型提示驱动

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
"""商品模型"""
name: str
price: float
is_offer: bool = False

@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
return {"item_name": item.name, "item_id": item_id}

只需一次类型声明,即可获得:

  • 编辑器自动补全
  • 数据验证
  • 自动类型转换
  • 自动文档生成

高性能

FastAPI 基于 Starlette 和 Pydantic,性能极其出色:

与其他框架对比

特性FastAPIFlaskDjangoExpress (Node.js)
性能⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
类型提示原生支持需手动部分支持TypeScript
自动文档内置需扩展需扩展需扩展
异步支持原生需扩展部分支持原生
学习曲线
数据验证内置 Pydantic需手动Form/Model需库

FastAPI 技术栈

适用场景

适合使用 FastAPI 的场景

  1. REST API 开发:构建高性能的 RESTful API
  2. 微服务架构:轻量级、高性能的服务
  3. 后端服务:移动应用、Web 前端的后端
  4. 机器学习服务:部署 ML 模型为 API
  5. 实时应用:WebSocket 支持
  6. 数据处理 API:数据验证和转换

可能不太适合的场景

  1. 传统 CMS 网站:考虑 Django
  2. 简单静态网站:考虑 Flask 或纯静态
  3. 需要完整 Admin 后台:考虑 Django Admin

教程目录

入门基础

核心功能

  • 请求处理 - 路径参数、查询参数、请求体处理
  • 响应模型 - 响应格式、数据过滤、状态码
  • 数据验证 - Pydantic 模型、字段验证、自定义验证器

进阶特性

安全认证

数据库集成

测试与部署

  • 测试 - 单元测试、集成测试、依赖覆盖
  • 部署 - Docker、Nginx、生产环境配置

参考资料

快速开始

# main.py
from fastapi import FastAPI

app = FastAPI(
title="我的 API",
description="一个示例 API",
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):
"""获取商品信息"""
return {"item_id": item_id, "q": q}

运行:

# 安装
pip install "fastapi[standard]"

# 开发模式运行
fastapi dev main.py

# 生产模式运行
fastapi run main.py

学习建议

  1. 先掌握 Python 类型提示:FastAPI 高度依赖类型提示
  2. 理解 Pydantic:数据验证的核心
  3. 从简单开始:先构建基本的 CRUD API
  4. 使用自动文档:充分利用 Swagger UI 测试 API
  5. 异步优先:理解 async/await 的使用场景

延伸阅读