复盘日:恭喜你完成了第三周的学习!今天是巩固和总结的日子。我们将回顾过去 6 天学到的所有 FastAPI 知识,整理成速查表,并记录遇到的问题和解决方案。今天不只是复习,而是要彻底理解 “如何将 FastAPI 知识应用到实际项目”、“如何设计可扩展的 API 架构” 以及 “如何为下一阶段的 Go 语言学习做好准备”。
复盘内容 | Review
FastAPI 核心点回顾
FastAPI 核心点回顾
Day 15 - 快速入门:
- FastAPI 应用初始化:
app = FastAPI(title="...", description="...") - 路由定义:
@app.get("/")、@app.post("/") - 路径参数:
@app.get("/items/{item_id}"),item_id: int自动类型转换 - 查询参数:函数参数不在路径中,自动识别为查询参数
- Uvicorn 启动:
uvicorn main:app --reload - Swagger UI:自动生成文档,访问
/docs
- Schema 定义:继承
BaseModel,使用类型提示 - Field 验证:
Field(..., min_length=3, max_length=20) - 请求模型:定义前端发送的数据结构
- 响应模型:
response_model=UserResponse自动过滤字段 - EmailStr:自动验证邮箱格式(需要安装 email-validator)
- 特殊类型:
IPvAnyAddress、HttpUrl、datetime
- 依赖注入:
Depends(verify_token)复用逻辑 - 依赖返回值:
current_user: dict = Depends(get_current_user) - 中间件:
@app.middleware("http")全局处理 - CORS 配置:
CORSMiddleware处理跨域请求 - 请求耗时:中间件统计处理时间
- 异步引擎:
create_async_engine(DATABASE_URL) - 异步会话:
AsyncSession、AsyncSessionLocal - 模型定义:继承
Base,使用Column定义字段 - 查询语法:
select(Model).where(...).offset(...).limit(...) - 数据库依赖:
async def get_db(): yield session - 事务控制:
await db.commit()、await db.rollback()
- 配置管理:
pydantic-settings读取环境变量 .env文件:存储敏感配置(不提交到 Git)- Gunicorn:进程管理器,管理多个 Uvicorn Worker
- Dockerfile:容器化应用
- Docker Compose:编排多个服务
- 项目结构:模块化设计,按功能拆分
- 完整 CRUD:创建、查询、更新、删除
- 数据验证:Pydantic 自动验证请求数据
- 容器化部署:Docker + Docker Compose
复盘产出 | Output
1. 第三阶段速查表
FastAPI 基础
Pydantic 模型
依赖注入
数据库操作
配置管理
Docker 部署
2. 常见问题与解决方案
FastAPI 问题
FastAPI 问题
问题:
422 Validation Error解决方案:- 检查请求数据是否符合 Schema 定义
- 检查字段类型是否正确
- 检查必填字段是否提供
- 检查路由装饰器是否正确(
@app.get("/")) - 检查函数名是否重复
- 检查服务器是否重启(开发模式需要
--reload)
数据库问题
数据库问题
问题:
RuntimeError: This event loop is already running解决方案:检查代码中是否有同步调用,确保所有数据库操作都是异步的问题:连接泄漏解决方案:确保使用依赖注入管理会话,或使用 async with 确保会话关闭部署问题
部署问题
问题:Docker 构建失败解决方案:
- 检查 Dockerfile 语法
- 检查 requirements.txt 是否存在
- 检查依赖是否正确安装
- 检查启动命令是否正确
- 检查日志:
docker logs container_name - 检查环境变量是否正确配置
3. 项目重构示例
重构示例:Day 15 的基础 API
重构示例:Day 15 的基础 API
原始版本:优化版本(应用 Week 3 学到的知识):改进点:
- 使用异步数据库操作
- 添加响应模型,自动序列化
- 使用依赖注入管理数据库会话
- 添加错误处理
🏆 阶段性总结
恭喜你!你已经完成了 Project Team 基础训练营的第三阶段。到这里你已经掌握了:
- ✅ FastAPI 框架基础和路由定义
- ✅ Pydantic 数据验证和模型设计
- ✅ 依赖注入和中间件
- ✅ SQLAlchemy 异步数据库操作
- ✅ 配置管理和环境变量
- ✅ Docker 容器化部署
- ✅ 完整的 API 项目开发能力
- Go 语言基础
- Go 并发编程
- Go Web 开发
- 微服务架构
学习建议
巩固基础
- 复习本周的所有代码示例
- 完成所有拓展任务
- 整理个人知识库和速查表
- 记录遇到的问题和解决方案
实践项目
- 尝试开发自己的 API 项目
- 练习数据库操作和依赖注入
- 熟悉 Docker 部署流程
- 研究生产环境的最佳实践
上一天: 综合实战
Day 20 | 第三阶段综合实战
下一周: Go 语言
第 04 周 | Go 语言拓展