05|把脚本改造成服务:FastAPI 分层架构重构实录
文章目录
-
- 05|把脚本改造成服务:FastAPI 分层架构重构实录
- 摘要
- SEO 摘要
- 目录
- 重构前痛点
- 三层架构设计
- 核心代码示例
- 回归验证策略
- 指标对比示例
- 结尾互动问题
- 分层架构图
- 深度重构:为什么“脚本式成功”会演变成“系统性失控”
- 团队协作层面的收益
- 重构实施路线(推荐 4 周)
- 案例复盘:一次低风险重构的推进过程
- 常见问题 FAQ
- 实战结论
- 附录:分层重构实施清单
- 版权声明
摘要
项目初期脚本化开发推进很快,但业务一复杂,代码就容易牵一发动全身。 这篇文章通过一个真实重构路径,演示如何把“路由里写完所有逻辑”拆成 Router / Service / Repository 三层。 重点是让系统可测试、可扩展,也更适合多人长期协作。
SEO 摘要
以 FastAPI 项目重构为主线,讲解如何从脚本式开发演进到 Router、Service、Repository 分层架构,提升可测试性和可维护性。适合 Python 后端团队做低风险架构升级。
目录
- 重构前痛点
- 三层架构设计
- 核心代码示例
- 回归验证策略
重构前痛点
- 路由层混入 SQL 与业务规则。
- 功能变更牵一发动全身。
- 测试必须起服务,开发效率低。
三层架构设计
- router:参数校验、协议适配。
- service:业务规则和流程编排。
- repository:数据读写与外部依赖。
核心代码示例
# router.py
from fastapi import APIRouter
from .service import OrderService
router = APIRouter()
svc = OrderService()
@router.post(\”/orders\”)
async def create_order(uid: int, amount: float):
data = await svc.create(uid, amount)
return {
\”code\”: 0, \”data\”: data}
# service.py
class OrderService:
async def create(self, uid: int, amount: float) –> dict:
if amount <= 0:
raise ValueError(\”amount 必须大于 0\”)
return {
\”order_id\”: f\”O{
uid}001\”, \”amount\”: amount}
回归验证策略
- 路由测试:只验证输入输出协议。
- 服务测试:验证业务规则分支。
- 仓储测试:验证数据访问正确性与异常处理。
指标对比示例
| 新功能平均开发周期 | 5.5 天 | 3.2 天 | 迭代速度提升 |
| 核心模块单测覆盖率 | 28% | 82% | 可测试性增强 |
| 线上回归故障/月 | 6 次 | 2 次 | 变更风险下降 |
结尾互动问题
- 你的项目目前是“按层组织”还是“按功能堆叠”?
- 路由层是否还在直接操作数据库?
- 你们做架构重构时最担心的是性能还是回归风险?




