为什么要有这篇目录

FastAPI 上手很快,也很容易写成一堆无法测试、无法拆分的路由函数。本系列先把第一个接口跑起来,再把请求契约、依赖、数据库、异常、鉴权、测试和生产部署拆开。读的时候按顺序走:先能访问 /docs,再谈工程。

建议阅读顺序

  1. FastAPI 系列:从第一个接口到生产部署:系列边界、和 Flask / Django 的差别。
  2. FastAPI 为什么适合做 JSON API:ASGI、类型提示与自动文档
  3. 第一个接口怎么跑起来:安装、uvicorn 与 /docs
  4. 路径、查询和请求体为什么要分开声明
  5. Pydantic 模型怎么当契约:校验、响应模型和示例
  6. 路由怎么拆:APIRouter、前缀和项目结构
  7. 依赖注入到底省了什么:Depends、yield 与生命周期
  8. 数据库会话怎么进接口:SQLAlchemy 与依赖覆盖
  9. 状态码和异常为什么不要裸 raise
  10. 鉴权怎么接到 Depends 上:OAuth2 Password 与 Bearer JWT
  11. 中间件、CORS 和后台任务分别解决什么
  12. 测试怎么写才不连真实库:TestClient 与 dependency_overrides
  13. 生产怎么部署:workers、健康检查、配置与日志

怎么读

前 5 篇把请求从 URL 拆进函数参数,并让 OpenAPI 自动出来。后 7 篇把会话、权限和测试从路由函数里抽走。代码以 Python 3.11+、FastAPI 当前稳定版、Pydantic v2 为准。

读完可以自检的三件事

  • 请求和响应契约是否进了 Pydantic 模型,而不是手写 dict
  • 数据库会话和当前用户是否是 Depends,测试时能否 dependency_overrides 换掉。
  • 生产是否有多 worker、健康检查和结构化日志,而不是只开 fastapi dev