我正在尝试收集有关REST版本控制的信息。当我查看论坛时,最喜欢的似乎是使用Accept
标题。
但是,如果我检查StackExchange,Google,Twitter,Yahoo,Instagram和eBay的API,他们都会通过URI进行版本控制。
我无法找到他们为什么喜欢这种方式而不是HTTP标头。我想知道事实,而不是意见。任何人都可以帮忙吗?
答案 0 :(得分:1)
确实没有“正确的”#39;在REST中进行api版本控制的方法。我读过的最好的文章解释了不同的错误'这样做的方法是特洛伊·亨特(Troy Hunt):Your API versioning is wrong, which is why I decided to do it 3 different wrong ways
引用这篇文章,他写了三个选项:
- 网址:您只需将API版本打入网址,例如:https://haveibeenpwned.com/api/v2/breachedaccount/foo
- 自定义请求标头:您使用与以前相同的网址,但添加标题,例如
api-version: 2
- 接受标头:您可以修改接受标头以指定版本,例如
醇>Accept: application/vnd.haveibeenpwned.v2+json
在评论和讨论中,确定了一些其他技术:
application/vnd.haveibeenpwned+json; version=2.0
您写道:
我想知道事实,而不是意见。
不幸的是,这里没有事实 - 由于上述所有原因,任何决定都是基于负责人的意见。
所以,虽然有一种方式或其他方面存在很多争论(另请参阅此Best practices for API versioning?以及Troy链接到的其他参考资料)。我相信许多“大”'由于一个简单的实用原因,服务集中在URI方法上:
对于新手客户端开发人员来说,这是最简单的理解和实现。
这些服务希望让大多数客户端开发人员尽可能轻松地与他们的api进行交互,尽可能少的支持 - 其中许多人只会受到希望的启发。与此服务互动' API。
在大多数客户端语言中,操作字符串来构造uri是一项相当简单的任务,许多新手开发人员可能从未听说过接受标头。所以,你可以认为它的设计符合开发人员的最低标准。