Skip to content

40. FastAPI 实战路线与学习安排 ​

用一个项目把知识串起来 ​

建议做“学习资料与任务管理 API”:用户注册登录、资料管理、文章标签或角色、分页搜索、文件上传、报告导出、学习聊天室,最后接大模型学习助手。它能自然覆盖本目录,而不必一开始设计复杂商业系统。

先修知识:会写 Python 函数、列表和字典,理解模块导入、异常、类型注解;知道 HTTP 方法、JSON、SQL 基本语句。遇到这些概念完全陌生时,先补一两天小练习,后续更顺畅。

四周安排:每天约 1~2 小时 ​

阶段阅读范围要交付的功能验收方式
第 1 周前半01~05环境、启动、路径/查询/原始 JSON能独立启动并用三种方式传参
第 1 周后半06~10类型、约束、嵌套正文、表单合法请求成功,错误输入定位清楚
第 2 周前半11~19上传下载、响应模型、分页、流式基础不泄露内部字段,分页边界正确
第 2 周后半20~24MySQL、关系模型、完整 CRUD三类关系与事务回滚验证通过
第 3 周前半25~30中间件、CORS、模块化、工程结构公共逻辑集中,代码能按模块定位
第 3 周后半31~35 及两个 32依赖复用与授权链明确每条接口执行哪些依赖
第 4 周前半36~38JWT、后台导出、聊天、模型流成功、失败、断线都可解释
第 4 周后半39~40部署、观测、复盘他人可按 README 复现并访问

本目录原编号重复 32,因此实际是 41 篇;表中“阅读范围”使用原标题编号,不是文件数量。可用一天复习替代一天新增内容,不必为了追进度跳过验证。

每次学习采用同一个小循环 ​

  1. 用自己的话解释一个概念,不超过三句话。
  2. 手敲最小示例,确认依赖、文件位置和启动命令。
  3. 发送一个正常请求、一个缺参请求、一个边界请求。
  4. 改一个需求,例如列表改分页、路径加校验。
  5. 把今天的功能合并到练习项目,记录错误原因和解决方式。

只看文档不发请求,很容易把“看懂”误认为“会做”。也不要一次拷贝整套项目后再找问题,先让每一步有可以观察的结果。

三个实战里程碑 ​

里程碑一:可用的单用户资料库 ​

实现资料增删改查、分页、上传下载。验收:无数据时返回空列表,非法参数返回合理错误,下载不能越过受控目录。此时可以先用内存或少量数据库数据,不要求高并发。

里程碑二:可维护的多用户服务 ​

加入用户、资料、文章、角色模型,认证与归属检查,模块化和数据库迁移。验收:用户 A 无法改 B 的资料;请求失败时事务回滚;响应没有密码散列;关联查询没有明显 N+1。

里程碑三:可部署的实时与批处理应用 ​

加入报告导出、聊天室、模型 SSE,发布到测试环境。验收:后台失败可见,断线会清理连接,无模型配置时返回明确错误;多 worker 前先移除内存共享假设。

百万条练习放在哪一步 ​

先完成 1000 条完整关联操作,再提升到 10000、100000、1000000。记录批大小、总耗时、峰值内存、每批延迟、SQL 数量、数据库 CPU 和复制影响。保证不同测量具有相同硬件、索引和事务条件,才能比较。

百万用户示例会写入额外资料、文章和关联行,提前估算空间。重点是能解释为何分批、为何主键映射不能靠猜、为何失败后需要检查点,而不是只追求一个好看的速度数字。

应保留的测试与文档 ​

测试优先覆盖核心规则和边界:登录失败、越权、金额计算、分页边界、事务原子性、关联删除、SSE 完成与中断。外部 MySQL、模型 API、反向代理还需独立集成验证,不能全靠内存替身。

README 至少写环境要求、安装命令、配置变量、迁移、启动、测试、示例请求和已知限制。新增依赖更新锁文件;学习用占位值与真实密钥分开。

遇到问题时的定位顺序 ​

先看进程是否启动,再确认路径和方法,再检查参数位置和响应状态;数据库错误继续区分连接、约束、事务和查询计划;浏览器问题再检查 CORS、代理和 Cookie;流式问题观察是否真的收到分段数据与结束事件。

练习:给每个里程碑写三条可验证的完成标准。四周后从空目录重建最小版本,能在不照抄整章的情况下串起请求、验证、业务、事务和响应,就形成了自己的知识体系。