跳到内容

关于 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