如何设计一个后端项目的架构?
Python 后端项目架构笔记
1. 后端项目核心思想
一个成熟 Python 后端项目通常采用分层架构(Layered Architecture)。
每个人只做自己的事情,不关注不相干的
比如数据库的只curd不做什么安全校验登录
核心目标:
- 降低代码耦合
- 分离职责
- 方便测试
- 方便扩展
- 方便团队协作
整体调用链:
1 | 用户请求 |
2. 常见项目结构
1 | backend/ |

3. API Router(接口层)
位置:
1 | api/ |
作用:
负责 HTTP 世界和程序世界的连接。
负责:
✅ 接收请求
✅ 参数解析
✅ 调用 Service
✅ 返回响应
例如:
1 |
|
不要写:
1 | sql = "select * from users" |
原因:
API 不应该知道数据库。
4. Schema(数据校验层)
位置:
1 | schemas/ |
作用:
定义:
- 请求格式
- 返回格式
例如:
用户注册:
1 | class UserCreate(BaseModel): |
请求:
1 | { |
Schema负责检查:
- 有没有字段
- 类型对不对
- 格式是否正确
常用:
FastAPI:
1 | Pydantic |
5. Service(业务逻辑层)⭐
位置:
1 | services/ |
这是项目的大脑。
负责:
- 业务规则
- 流程控制
- 权限判断
- 事务
例如:
注册用户:
1 | 注册流程: |
代码:
1 | class UserService: |
Service 不关心:
数据库怎么查询。
6. Repository(数据访问层)⭐
位置:
1 | repositories/ |
作用:
专门负责数据库 CRUD。
例如:
1 | class UserRepository: |
负责:
✅ 查询
✅ 新增
✅ 修改
✅ 删除
不负责:
❌ 用户权限
❌ 发邮件
❌ 业务流程
7. Model(数据库模型)
位置:
1 | models/ |
作用:
描述数据库表。
例如:
数据库:
1 | users表 |
对应:
1 | class User(Base): |
ORM关系:
1 | Python对象 |
8. Database 层
位置:
1 | database.py |
负责:
Engine
数据库连接池:
1 | engine |
Session
数据库会话:
1 | SessionLocal |
Base
ORM基类:
1 | class Base(DeclarativeBase): |
结构:
1 | database.py |
9. Session 生命周期
推荐:
不要:
1 | repo里面创建Session |
而是:
1 | Request进入 |
FastAPI:
1 | def get_db(): |
10. Repository 和 Service 的区别
Repository
关注:
数据怎么拿?
例如:
1 | get_user_by_email() |
Service
关注:
为什么拿?
例如:
登录:
1 | 用户输入邮箱密码 |
11. Transaction(事务)
简单项目:
Repository commit:
1 | repo.create() |
大型项目:
Service控制:
1 | try: |
原因:
保证:
1 | 全部成功 |
12. 数据库迁移
不要生产环境使用:
1 | Base.metadata.create_all() |
原因:
无法管理历史变化。
生产:
使用:
1 | Alembic |
流程:
1 | 修改Model |
13. 完整请求流程
例:
注册用户
1 | POST /users |
14. 如果做 AI 后端
普通后端:
1 | API |
AI 后端:
1 | API |
常见目录:
1 | app/ |
最后记忆口诀 🐱
1 | API |
一个成熟 Python 后端的核心不是“文件夹多”,而是:
每一层只做自己的事情。
小项目可以:
1 | API → Service → Database |
大型项目:
1 | API → Service → Repository → ORM → Database |
慢慢演进即可。🐾
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 楠瓜的小窝!
评论




