DRF 版本控制的最佳实践 - 复制整个文件夹?或者子类化以前的版本?

Best practice for DRF versioning - copy whole folder? Or subclass previous version?

特别是根据 this question, and this answer,创建 v2、v3 等的最可持续的方式是什么 - 大多数时候,每个版本都会引入对先前版本的增量更改。大多数端点保持不变,大多数字段保持不变。

选项 1:复制 v1 文件夹,重做内部引用以确保代码已更新,然后对其进行更改。这使每个版本都自包含。如果出现错误,您可以在所有版本中修复它。版本干净,依赖关系更易于管理。但是,例如,在 v30 之后,您最终会得到很多重复的代码。

选项 2:创建 v2 文件夹,并使 v2 类 成为 v1 类 的子类,提供基本功能,然后添加您的更改。这促进了代码的重用,但会变得非常快,例如。当您有超过 30 个版本时,跟踪一个 change/fixing 错误。

任何流行的最佳实践,pros/cons?

您的选项 2 将在几个版本中变成选项 1。

我认为有两种情况:

1 个案例:您有传统的主要 CRUD API 然后我建议查看 this post,它显示了一种创建转换的方法通过序列化程序在版本之间。

2 案例:您的 API 更多是关于算法、逻辑和数据处理 - 那么您可以选择选项 1 - 在 DRF 中创建另一个应用程序(复制文件夹),将所有公共库移出应用程序并仅保留 类 可能会更改并需要在应用程序中向后兼容支持的库。