fastapi: 搭建一个基于fastapi框架的脚手架,有哪些工作要做?
要构建一个生产可用的 FastAPI 完善脚手架(Boilerplate),你需要从工程化、业务通用功能、运维监控三个维度进行系统化设计。
以下是核心建设任务清单:
📁 1. 基础架构与目录分层
规范的目录结构是脚手架的基础,建议采用异步(Async)架构和分层设计:
- 解耦分层:划分 schemas(数据校验)、models(数据库模型)、api(路由控制)、services(核心业务逻辑)。
- 配置管理:使用 pydantic-settings 统一管理环境变量(.env),区分开发、测试、生产环境。
- 生命周期管理:利用 Lifespan 特性处理服务启动(连接数据库/缓存)与关闭(释放资源)的逻辑。
🔐 2. 数据库与状态存储
- 异步 ORM 集成:集成 SQLAlchemy 2.0(或 Tortoise-ORM),配置异步连接池,封装常用的 CRUD 通用基类。
- 数据迁移:集成 Alembic,实现数据库版本控制与自动迁移脚本生成。
- Redis 缓存:集成 redis-om 或 aioredis,用于分发分布式锁、存储 Session 或缓存高频数据。
🛡️ 3. 安全与权限认证
- JWT 认证:内置 OAuth2 密码模式,封装 JWT Token 的生成、解析与过期刷新机制。
- 权限控制(RBAC):利用 FastAPI 的 Depends 依赖注入,实现基于角色(Role)或权限点(Permission)的接口访问控制。
- 安全防护:内置 CORSMiddleware 防跨域,配置 TrustedHostMiddleware 防域名劫持,集成密码哈希加密(如 passlib[bcrypt])。
📈 4. 全局通用业务组件
- 统一响应格式:封装标准 JSON 返回体(包含 code, data, message),避免接口格式混乱。
- 全局异常捕获:重写 FastAPI 的 Exception 处理器,统一拦截参数校验错误(ValidationError)、数据库异常及自定义业务异常。
- 日志系统:集成 Loguru 或定制 logging,实现日志按天轮转、按级别分类(info/error),并输出为 JSON 格式以便日志收集。
- 分页组件:封装通用的异步分页查询工具,统一入参(page, size)与出参。
⚙️ 5. 代码质量与工程化
- 自动化测试:搭建 pytest 测试框架,配置 httpx.AsyncClient 进行异步接口集成测试,建立内存数据库(如 SQLite)测试隔离。
- 代码规范:配置 ruff 或 black + flake8 进行代码自动格式化与静态检查。
- 依赖管理:使用 Poetry 或 Pipenv 管理依赖,确保团队开发环境及锁版本一致。
📊 6. 运维与监控部署
- API 文档调优:统一配置 Swagger UI / ReDoc,支持通过 Header 传递 Token 调试,线上环境支持关闭文档。
- 健康检查:提供 /health 接口,检测数据库、Redis 等外部依赖的连通性。
- 指标监控:集成 prometheus-fastapi-instrumentator,暴露 Prometheus 监控指标。
- 容器化:编写多阶段构建的 Dockerfile(严格区分构建环境与运行环境,减小镜像体积),并提供 docker-compose 一键拉起全套基础服务。
浙公网安备 33010602011771号