Web services 最佳实践-RESTAPI版本控制:物理存储源代码的位置和方式

Web services 最佳实践-RESTAPI版本控制:物理存储源代码的位置和方式,web-services,api,rest,design-patterns,namespaces,Web Services,Api,Rest,Design Patterns,Namespaces,我的问题是不是关于RESTAPI URI设计的最佳实践 我自己决定,我将使用以下方法: 我更好奇的是如何提前设计实际的源代码,以方便扩展具有更多版本的API 我们假设您最喜欢的编程语言使用了经典的MVC框架。我们的API工作正常,但我们希望添加和更改不向后兼容的功能。我们确实考虑过一个很好的URI设计,但没有考虑我们的代码应该是什么样子,以便与不同的API版本很好地工作。废话。。现在怎么办 问题:可版本化RESTAPI的源代码应该是什么样子? 很高兴有: 不要混淆不同的版本 还是最好用干的 不

我的问题是不是关于RESTAPI URI设计的最佳实践
我自己决定,我将使用以下方法:

我更好奇的是如何提前设计实际的源代码,以方便扩展具有更多版本的API

我们假设您最喜欢的编程语言使用了经典的MVC框架。
我们的API工作正常,但我们希望添加和更改不向后兼容的功能。我们确实考虑过一个很好的URI设计,但没有考虑我们的代码应该是什么样子,以便与不同的API版本很好地工作。废话。。现在怎么办

问题:可版本化RESTAPI的源代码应该是什么样子? 很高兴有:
  • 不要混淆不同的版本
  • 还是最好用干的
  • 不要重新发明轮子
  • 将延长
  • 我能想到的可能答案是:
  • 相同的项目-不同的名称空间和子文件夹
  • 命名空间:
    Namespace-App\Http\Controllers\v1\Users
    文件夹:
    {root\u Folder}\app\Http\Controllers\v1\Users\UserLoginController.php

  • 不同的项目
  • 点<代码>https://theserver.com/api/v1/whatsoever
    到项目1

    https://theserver.com/api/v2/whatsoever
    要投影2

    以下是我的逻辑:-首先,我们需要回答“为什么需要版本控制?” -如果我们能够以向后兼容的方式扩展API,那么我们就不需要版本控制(所有应用程序和服务都将使用相同的API,不需要任何更改)。 -如果我们不能提供向后兼容的API,那么我们需要引入下一版本的API。这将允许所有应用程序和服务在旧版本运行时顺利迁移到新版本。一段时间(一年)后,第一个版本可能会被淘汰和停止


    因此,基于上述答案,我将在我的存储库中的不同分支中保存API版本。一个代码库,每个版本有多个分支。第一个分支对应于v1,它是稳定的,只接收修复。这里没有积极的发展。第二个分支对应于具有所有新特性的v2

    不幸的是,这个问题似乎过于笼统,也过于依赖于语言/技术。如果您指定了一种语言(以及框架,如果适用),您可能会得到具体的答案。这还取决于在较新的版本中进行了什么样的更改。是否更改了应用程序逻辑(例如,您的控制器、视图、将电子邮件/日志插件替换为另一个插件和其他基础设施设置),还是域逻辑更改(或两者兼而有之)?更新版本多久发布一次?api是仅供内部使用(您和您的团队),还是外部应用程序可以使用它?如果是外部的,那么如果有人希望总是发送最新版本的请求呢?我知道有很多问题,但不同的场景需要不同的方法。