1.版本管理机制
1 | # requirements.txt中固定版本示例 |
- FastAPI当前保持0.x.x版本,遵循语义化版本规范,MINOR版本更新可能包含Breaking Changes
- 生产环境必须固定版本范围,推荐使用
fastapi>=X.Y.Z,<X.Y+1.0格式防止意外升级 - 升级流程:
graph TD A[编写测试用例] --> B[升级FastAPI版本] B --> C{测试通过?} C -->|是| D[更新版本约束] C -->|否| E[修复代码问题] E --> B
2.依赖管理策略
2.1 Starlette处理
- 禁止直接固定Starlette版本,FastAPI自动绑定兼容版本
- 不同FastAPI版本会指定对应的Starlette依赖树
2.2 Pydantic约束
- Pydantic需固定到1.x版本,推荐
pydantic>=1.2.0,<2.0.0 - FastAPI已包含与Pydantic的兼容性测试,确保版本适配
3.HTTPS核心原理
3.1 证书机制
- 需从CA机构获取证书(如Let’s Encrypt),证书存在有效期需定期更新
- SNI扩展支持单IP多证书,通过TLS终止代理实现多域名托管
3.2 通信流程
graph LR
A[客户端] --> B[TLS终止代理]
B -->|解密请求| C[FastAPI应用]
C -->|响应数据| B
B -->|加密响应| A
- 代理服务器(Nginx/Traefik)负责HTTPS加解密,应用层处理纯HTTP流量
4.生产部署建议
证书管理:
- 使用Let’s Encrypt免费证书,通过certbot-auto工具自动续期
- 配置证书更新监控(如crontab定时任务)
代理配置:
1
2
3
4
5
6
7
8
9
10# Nginx配置示例
server {
listen 443 ssl;
server_name api.example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
proxy_pass http://localhost:8000;
}
}- 推荐使用Traefik/Caddy等支持自动证书管理的代理
安全增强:
- 强制HTTP跳转HTTPS:
return 301 https://$host$request_uri; - 启用HSTS头:
add_header Strict-Transport-Security "max-age=31536000";
- 强制HTTP跳转HTTPS:
测试命令示例:
1
2
3
4
5 # 查看当前FastAPI版本
pip show fastapi | grep Version
# 证书续期操作
sudo certbot renew --dry-run