无需重复代码的 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 最佳实践版本控制的主要内容,如果未能解决你的问题,请参考以下文章
在rest api app中生成laravel请求验证的最佳实践
架构:在不污染 POJO 的情况下操作模型的最佳实践?并且无需到处重复样板代码[关闭]