|
| 1 | +--- |
| 2 | +title: FastAPI Best Architecture |
| 3 | +createTime: 2024/09/12 20:40:22 |
| 4 | +--- |
| 5 | + |
| 6 | +> [!TIP] |
| 7 | +> 此仓库作为模板库公开,任何人或企业均可免费使用! |
| 8 | +
|
| 9 | +**🔥持续更新维护中🔥** |
| 10 | + |
| 11 | + |
| 12 | + |
| 13 | +## 伪三层架构 |
| 14 | + |
| 15 | +mvc 架构作为常规设计模式,在 python web 中也很常见,但是三层架构更令人着迷 |
| 16 | + |
| 17 | +在 python web 开发中,三层架构的概念并没有通用标准,所以这里我们称之为伪三层架构 |
| 18 | + |
| 19 | +但请注意,我们并没有传统的多应用程序结构(django、springBoot...),如果您不喜欢这种模式,可以使用模板对其进行随意改造! |
| 20 | + |
| 21 | +| 工作流程 | java | fastapi_best_architecture | |
| 22 | +|------|----------------|---------------------------| |
| 23 | +| 视图 | controller | api | |
| 24 | +| 数据传输 | dto | schema | |
| 25 | +| 业务逻辑 | service + impl | service | |
| 26 | +| 数据访问 | dao / mapper | crud | |
| 27 | +| 模型 | model / entity | model | |
| 28 | + |
| 29 | +## 特征 |
| 30 | + |
| 31 | +- [x] 全局 FastAPI PEP 593 Annotated 参数风格 |
| 32 | +- [x] async/await + asgiref 的全局异步设计 |
| 33 | +- [x] 遵循 Restful API 规范 |
| 34 | +- [x] 全局 SQLAlchemy 2.0 语法 |
| 35 | +- [x] Pydantic v1 和 v2 (不同分支) |
| 36 | +- [x] Casbin RBAC 访问控制模型 |
| 37 | +- [x] 角色菜单 RBAC 访问控制模型 |
| 38 | +- [x] Celery 异步任务 |
| 39 | +- [x] JWT 中间件白名单认证 |
| 40 | +- [x] 全局自定义时区时间 |
| 41 | +- [x] Docker / Docker-compose 部署 |
| 42 | +- [x] Pytest 单元测试 |
| 43 | + |
| 44 | +## 内置功能 |
| 45 | + |
| 46 | +- [x] 用户管理:系统用户角色管理,权限分配 |
| 47 | +- [x] 部门管理:配置系统组织机构(公司、部门、小组...) |
| 48 | +- [x] 菜单管理:配置系统菜单,用户菜单,按钮权限标识 |
| 49 | +- [x] 角色管理:角色菜单权限分配,角色路由权限分配 |
| 50 | +- [x] 字典管理:维护系统内部常用固定数据或参数 |
| 51 | +- [x] 代码生成:后端代码自动生成,支持预览,写入及下载 |
| 52 | +- [x] 操作日志:系统正常和异常操作的日志记录与查询 |
| 53 | +- [x] 登录认证:图形验证码后台认证登录 |
| 54 | +- [x] 登录日志:用户正常和异常登录的日志记录与查询 |
| 55 | +- [x] 服务监控:服务器硬件设备信息与状态 |
| 56 | +- [x] 定时任务:自动化任务,异步任务,支持函数调用 |
| 57 | +- [x] 接口文档:自动生成在线交互式 API 接口文档 |
| 58 | + |
| 59 | +## 项目结构 |
| 60 | + |
| 61 | +::: file-tree |
| 62 | +- backend/ 后端 |
| 63 | + - alembic/ 数据库迁移 |
| 64 | + - app/ 应用 |
| 65 | + - admin 系统后台 |
| 66 | + - api/ 接口 |
| 67 | + - crud/ CRUD |
| 68 | + - model/ 模型 |
| 69 | + - schema/ 数据传输 |
| 70 | + - service/ 服务 |
| 71 | + - tests/ 测试 |
| 72 | + - generator/ 代码生成 |
| 73 | + - task/ 任务 |
| 74 | + - common/ 公共资源 |
| 75 | + - core/ 核心配置 |
| 76 | + - database/ 数据库连接 |
| 77 | + - log/ 日志 |
| 78 | + - middleware/ 中间件 |
| 79 | + - scripts/ 脚本 |
| 80 | + - sql/ SQL文件 |
| 81 | + - static/ 静态文件 |
| 82 | + - templates/ 模版文件 |
| 83 | + - utils/ 工具包 |
| 84 | +- deploy/ 服务器部署 |
| 85 | +- ... |
| 86 | +::: |
| 87 | + |
| 88 | +## 贡献者 |
| 89 | + |
| 90 | +<a href="https://github.com/fastapi-practices/fastapi_best_architecture/graphs/contributors"> |
| 91 | + <img src="https://contrib.rocks/image?repo=fastapi-practices/fastapi_best_architecture"/> |
| 92 | +</a> |
| 93 | + |
| 94 | +## 许可证 |
| 95 | + |
| 96 | +本项目由 [MIT](https://github.com/fastapi-practices/fastapi_best_architecture/blob/master/LICENSE) 许可证的条款进行许可 |
| 97 | + |
| 98 | +[](https://starchart.cc/fastapi-practices/fastapi_best_architecture) |
| 99 | + |
| 100 | +## 相关 |
| 101 | + |
| 102 | +<RepoCard repo="fastapi-practices/sqlalchemy-crud-plus" /> |
| 103 | + |
| 104 | +::: tip 特别鸣谢 |
| 105 | +本文档由 [vuepress-theme-plume](https://github.com/pengzhanbo/vuepress-theme-plume) |
| 106 | +驱动,感谢 [pengzhanbo](https://github.com/pengzhanbo) 对此开源项目的杰出贡献 |
| 107 | +::: |
0 commit comments