实战日:Day 20 是 Python Web 阶段的”毕业大考”。我们将把 Week 3 所有的知识点串联起来,构建一个名为
InsightOps-API 的微服务。今天不只是写代码,而是要彻底理解 “如何设计一个完整的 API 项目”、“如何组织项目结构” 以及 “如何让代码具备生产级质量”。实战目标 | Project Goal
开发一个用于查询服务器监控数据的 RESTful API。1. 核心功能
- POST /servers: 注册新服务器(自动校验 IP 格式)
- GET /servers: 分页查询服务器列表
- GET /servers/: 查询特定服务器详情
- PUT /servers/: 更新服务器信息
- DELETE /servers/: 删除服务器
2. 技术栈
- Web 框架: FastAPI
- 数据验证: Pydantic
- 数据库: SQLAlchemy (Async) + MySQL
- 部署: Docker + Docker Compose
- 配置管理: pydantic-settings
代码任务 (120 mins)
编写核心代码
按照项目结构,逐步实现各个模块。项目结构说明:验证步骤:
app/:应用主目录models.py:数据库模型(ORM)schemas.py:Pydantic 模型(验证)database.py:数据库连接配置config.py:配置管理main.py:FastAPI 应用入口
- 访问
http://localhost:8000/docs打开 Swagger UI - 测试创建服务器:
- 点击
POST /servers/ - 输入数据,执行,应该返回 201
- 点击
- 测试查询服务器列表:
- 点击
GET /servers/ - 执行,应该看到服务器列表
- 点击
- 测试查询单个服务器:
- 点击
GET /servers/{server_id} - 输入服务器 ID,执行,应该看到服务器详情
- 点击
拓展任务 (30 mins)
挑战 1:添加认证
任务:为 API 添加 Token 认证,只有认证用户才能创建服务器。提示:使用 Day 17 学到的依赖注入实现。
挑战 2:添加日志
任务:添加请求日志中间件,记录每个请求的详细信息。提示:使用 Day 17 学到的中间件实现。
今日产出物
- 完整的
InsightOps-API项目 - Docker 镜像和 Docker Compose 配置
- 生产级 API 服务
参考代码
查看参考代码
在 GitHub 查看完整的 InsightOps API 项目
项目结构
查看标准项目目录结构
实际应用场景
FastAPI 在生产环境中的应用
- 微服务架构:构建轻量级微服务
- API 网关:作为 API 网关,统一管理接口
- 数据查询服务:提供数据查询和操作接口
- 自动化工具:为运维工具提供 RESTful API
- 监控系统:提供监控数据的查询接口
项目设计最佳实践
- 模块化设计:按功能拆分模块,便于维护
- 配置外置:使用环境变量管理配置
- 容器化部署:使用 Docker 实现可移植性
- 文档完善:利用 FastAPI 自动生成文档
- 错误处理:统一的错误处理和响应格式
上一天: 生产部署
Day 19 | 生产部署与配置
下一天: 第三阶段复盘
Day 21 | 第三阶段复盘