关于 FastAPI 版本¶
FastAPI 已经在许多应用程序和系统中投入生产环境使用。其测试覆盖率始终保持在 100%。但它的开发节奏依然很快。
新功能频繁添加,Bug 定期修复,代码也在持续改进中。
正因如此,目前的版本号仍为 0.x.x,这反映了每个版本都可能包含破坏性变更。这遵循了 语义化版本控制 (Semantic Versioning) 规范。
你现在就可以用 FastAPI 创建生产级应用程序(你可能已经这样做一段时间了),你只需要确保使用与你的其余代码兼容的特定版本即可。
锁定你的 fastapi 版本¶
你应该做的第一件事是,将你使用的 FastAPI 版本“锁定 (pin)”为你已知可与你的应用程序正常工作的特定最新版本。
例如,假设你的应用正在使用 0.112.0 版本。
如果你使用 requirements.txt 文件,你可以这样指定版本:
fastapi[standard]==0.112.0
这意味着你将严格使用 0.112.0 这个版本。
或者,你也可以这样锁定:
fastapi[standard]>=0.112.0,<0.113.0
这意味着你将使用 0.112.0 或更高版本,但低于 0.113.0 的版本。例如,0.112.2 版本也将被接受。
如果你使用其他工具来管理安装,比如 uv、Poetry、Pipenv 或其他工具,它们都有定义软件包特定版本的方法。
可用版本¶
你可以在 发布说明 (Release Notes) 中查看可用版本(例如查看当前的最新版本)。
关于版本¶
遵循语义化版本控制规范,任何低于 1.0.0 的版本都可能包含破坏性变更。
FastAPI 同时遵循这样一个惯例:任何“补丁 (PATCH)”版本更新仅用于修复 Bug 和非破坏性变更。
提示
“PATCH”是最后一位数字,例如在 0.2.3 中,PATCH 版本是 3。
因此,你应该能够锁定类似这样的版本:
fastapi>=0.45.0,<0.46.0
破坏性变更和新功能会在“次版本号 (MINOR)”中添加。
提示
“MINOR”是中间的数字,例如在 0.2.3 中,MINOR 版本是 2。
升级 FastAPI 版本¶
你应该为你的应用添加测试。
使用 FastAPI 进行测试非常简单(多亏了 Starlette),请查阅文档:测试 (Testing)
在你拥有测试之后,就可以将 FastAPI 版本升级到更新的版本,并通过运行测试来确保你所有的代码都能正常工作。
如果一切正常,或者在进行必要修改且所有测试通过后,你就可以将 fastapi 锁定到那个新的版本。
关于 Starlette¶
你不应该锁定 starlette 的版本。
不同版本的 FastAPI 会使用特定的较新版 Starlette。
因此,你可以直接让 FastAPI 使用它所需要的正确 Starlette 版本。
关于 Pydantic¶
Pydantic 将 FastAPI 的测试包含在其自身的测试套件中,因此 Pydantic 的新版本(高于 1.0.0)始终与 FastAPI 兼容。
你可以将 Pydantic 锁定为高于 1.0.0 的任何适合你的版本。
例如
pydantic>=2.7.0,<3.0.0