无需重复代码的 REST api 最佳实践版本控制

Posted

技术标签:

【中文标题】无需重复代码的 REST api 最佳实践版本控制【英文标题】:REST api best practices versioning without duplicating code 【发布时间】:2021-03-29 06:14:25 【问题描述】:

我在 Node 中自己编写了一个 api,用于学习和练习。我正在为如何实施版本控制而苦苦挣扎。 示例: 从 v1 开始的路线

api/v1/products 调用 v1/ProductController api/v1/clients 调用 v1/ClientController

v2 中的路由 - 唯一更改的路由(代码)

api/v2/clients 调用 v2/ClientController

在不将代码从 v1 复制到 v2 的情况下,管理 v2 行为的最佳做法是什么。我的想法/解决方案是:

api/v2/products -> 指向 -> 'v1/ProductController' 或 'api/v1/products'

是吗?

通过实施这种方式,我可以管理我的移动应用程序的默认版本。例如,移动应用程序版本 2 始终使用 api/v2。 而且它不需要根据操作指向 v1 或 v2。

在性能方面,在 Node 中,如果我在 v2 上也注册了 v1 的所有路由,会不会占用更多的内存或 cpu 使用率?

【问题讨论】:

【参考方案1】:

如果您发布了 api 的第 2 版,并且与第 1 版相比没有任何变化,但您希望客户端应用使用最新版本,则您的后端应该简单地将端点路由到第 1 版使用的相同代码。我用 Wirespec 做这个。 Wirespec 是一项免费的在线服务,可让您创建 API 并在可自定义的端点提供响应。它支持让您为端点定义多个版本。您甚至可以按照您描述的方式将多个端点附加到同一个 api。 Wirespec 的 api 响应生成服务在 Node.js 上运行。

访问https://wirespec.dev

您可以尝试使用此服务来了解如何创建支持多个版本的端点。还有一个好处是您可以按版本号过滤您的 API。

【讨论】:

以上是关于无需重复代码的 REST api 最佳实践版本控制的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 创建 REST API [重复]

进行微服务 REST API 版本控制的最佳方法是啥?

在rest api app中生成laravel请求验证的最佳实践

架构:在不污染 POJO 的情况下操作模型的最佳实践?并且无需到处重复样板代码[关闭]

无需对移动应用进行用户身份验证即可保护私有 REST API 的最佳方法

自定义 REST 服务的 API 身份验证最佳实践