-6

使用经典 REST api,最好将版本添加到 api url。这个版本可以是fi。嵌入路径 ( api.myservice.com/v1/dataset) 或作为参数 ( api.myservice.com/dataset?v=1)。当部署新版本的 api 时,只要需要,它就可以与旧版本并存。旧版本的 API 可以标记为已弃用,最终可以删除。

这为前端提供了适应新版本 API 的宽限期,因此在后端更新、前端开发人员对此进行调整和前端用户进行更新之间没有停机时间。

当我们使用 Firestore 或任何类似的实时数据库时,前端可以直接访问数据库。数据库的结构可以更改,列或表可以重命名、移动或删除。没有 API 可以为前端抽象出这种底层结构。那么,使用实时数据库向前端 - 后端通信添加某种版本控制的最佳方式是什么?

可能的解决方案:

  • 无论如何都要使用 REST api 作为包含版本的额外层。缺点:使用这种方法,您将失去实时数据库的优势,例如实时更新和用户管理。

  • 将抽象层移至前端并公开所需的最低版本。如果前端不满足此版本,则强制更新前端。缺点:相信前端会做正确的事,而不是强制执行。

  • 将版本添加到项目名称或表名称中。这将导致大量额外的冗余,其中数据必须不断保持同步。这可能会导致额外的成本并且容易出错。

  • 任何其他?

这些选项对我来说似乎都不是好主意。如果前端可以直接访问数据,最好的解决方案是什么?我知道这个问题很快就会被标记为“太宽泛”。如果是,请告诉我如何集中我的问题。

4

1 回答 1

4

我采用的典型方法是将数据模型的版本号放入数据库中。每当需要对数据库进行架构更改时,我都会检查它是否可以保持向后兼容。如果不是,请增加版本号。

无论哪种方式,架构都编码在我的数据库的安全规则中。这意味着客户端无法写入无效数据,因为它将被安全规则拒绝。

客户端读取版本号,并Please upgrade在版本号高于它们的构建目标时显示。

于 2019-11-18T15:44:25.210 回答