1. 模块化设计
1 | # routers/items.py |
- 使用
APIRouter实现路由模块化,支持设置统一前缀和标签 - 通过
include_router将子模块路由注入主应用:1
2
3
4
5
6# main.py
from fastapi import FastAPI
from routers import items
app = FastAPI()
app.include_router(items.router) - 支持嵌套路由分组,实现多层模块结构(如v1/users和v2/users)
2. 依赖注入系统
1 | # dependencies.py |
- 全局依赖:通过
app = FastAPI(dependencies=[...])设置全局限流/认证 - 模块级依赖:在
APIRouter初始化时声明模块专用依赖 - 支持异步依赖项管理数据库连接池等资源
3. 项目结构规范
1 | myapp/ |
- main.py:应用入口,初始化FastAPI实例和路由集成
- **routers/**:存放各业务模块路由定义(支持无限层级嵌套)
- **internal/**:存放内部管理接口(如后台任务/监控端点)
- dependencies.py:集中管理全局依赖项(数据库连接、认证等)
4. 版本控制实现
1 | # routers/v1/items.py |
- 通过路径前缀实现多版本API共存(如/api/v1/items)
- 支持不同版本独立维护路由逻辑和响应模型
- 文档自动分组展示不同版本接口
5. 中间件与全局配置
1 | from fastapi.middleware.cors import CORSMiddleware |
- 支持请求/响应拦截处理(如耗时统计、异常捕获)
- 推荐中间件执行顺序:
graph TD A[CORS] --> B[认证] --> C[请求处理] --> D[响应加工]
- 通过
@app.on_event("startup")初始化数据库连接等资源
生产环境建议
- 部署优化:使用Gunicorn+Uvicorn部署,配置worker数量
- 监控体系:集成Prometheus实现接口性能监控
- 配置管理:通过.env文件管理环境变量
- 安全加固:启用HTTPS并配置CORS白名单
- 日志规范:结构化日志记录请求全生命周期信息
测试命令示例:
1 uvicorn app.main:app --reload --port 8000