【发布时间】:2016-02-05 01:11:57
【问题描述】:
我的问题不是关于 REST API URI 设计的最佳实践。
我已经为自己决定了,我将使用以下方法:
我很好奇如何提前设计实际的源代码以轻松扩展更多版本的API。
假设我们为您最喜欢的编程语言使用了经典的 MVC 框架。
我们的 API 工作正常,但我们想要添加和更改不向后兼容的功能。我们确实考虑过一个不错的 URI 设计,但没有考虑我们的代码应该如何与不同的 API 版本一起工作。废话..现在怎么办?
问题:可版本化的 REST API 的源代码应该是什么样的?
很高兴拥有:
- 不要混淆不同的版本
- 仍然最好使用 DRY
- 不要重新发明轮子
- 将延长
我能想到的可能答案:
- 相同项目 - 不同的命名空间和子文件夹
命名空间:namespace App\Http\Controllers\v1\Users;
文件夹:{root_folder}\app\Http\Controllers\v1\Users\UserLoginController.php
- 不同的项目
将https://theserver.com/api/v1/whatsoever指向项目1
和https://theserver.com/api/v2/whatsoever 项目2
【问题讨论】:
-
不幸的是,这个问题似乎过于笼统,而且过于依赖语言/技术。
-
如果您指定一种语言(和适用的框架),您可能会得到具体的答案。
-
这还取决于在较新版本中进行了哪些更改。应用程序逻辑是否正在更改(例如,您的控制器、视图、将电子邮件/日志插件替换为另一个和其他基础设施设置),还是域逻辑更改(或两者兼而有之)?新版本多久发布一次? api 仅供内部使用(您和您的团队),还是外部应用程序可以使用它?如果是外部的,如果有人想总是向最新版本发送请求怎么办?我知道这是很多问题,但不同的场景需要不同的方法。
标签: web-services api rest design-patterns namespaces