REST API版本控制 - 流行的API

时间:2016-11-04 14:06:04

标签: rest architecture restful-architecture

我正在尝试收集有关REST版本控制的信息。当我查看论坛时,最喜欢的似乎是使用Accept标题。 但是,如果我检查StackExchange,Google,Twitter,Yahoo,Instagram和eBay的API,他们都会通过URI进行版本控制。

我无法找到他们为什么喜欢这种方式而不是HTTP标头。我想知道事实,而不是意见。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

确实没有“正确的”#39;在REST中进行api版本控制的方法。我读过的最好的文章解释了不同的错误'这样做的方法是特洛伊·亨特(Troy Hunt):Your API versioning is wrong, which is why I decided to do it 3 different wrong ways

引用这篇文章,他写了三个选项:

  
      
  1. 网址:您只需将API版本打入网址,例如:https://haveibeenpwned.com/api/v2/breachedaccount/foo
  2.   
  3. 自定义请求标头:您使用与以前相同的网址,但添加标题,例如api-version: 2
  4.   
  5. 接受标头:您可以修改接受标头以指定版本,例如Accept: application/vnd.haveibeenpwned.v2+json
  6.   

在评论和讨论中,确定了一些其他技术:

  1. 主机名:例如https://v2.api.hostname.com/resource
  2. 查询字符串:例如https://api.hostname.com/resource?api-version=2.0
  3. 接受标头的变体:application/vnd.haveibeenpwned+json; version=2.0
  4. 您写道:

      

    我想知道事实,而不是意见。

    不幸的是,这里没有事实 - 由于上述所有原因,任何决定都是基于负责人的意见。

    所以,虽然有一种方式或其他方面存在很多争论(另请参阅此Best practices for API versioning?以及Troy链接到的其他参考资料)。我相信许多“大”'由于一个简单的实用原因,服务集中在URI方法上:

    对于新手客户端开发人员来说,这是最简单的理解和实现。

    这些服务希望让大多数客户端开发人员尽可能轻松地与他们的api进行交互,尽可能少的支持 - 其中许多人只会受到希望的启发。与此服务互动' API。

    在大多数客户端语言中,操作字符串来构造uri是一项相当简单的任务,许多新手开发人员可能从未听说过接受标头。所以,你可以认为它的设计符合开发人员的最低标准。