API版本控制

作者: 一一道长一一 | 来源:发表于2018-03-30 15:27 被阅读31次

服务API的版本控制历来没有一个完美的解决方案,本篇列出了业界常见的三类API版本控制方案,每一类中又有1到2种实现方式(可能还有更多),看官们可根据自己项目的规模和要求选择适合自己的方案。


1. 强制使用统一API版本

整个项目使用一个API版本,每次变更需要考虑向后兼容性,基本原则:只能在原来的结构基础上增加属性,而不能删除,同时需要客户端进行配合。

比如:有个返回值是string类型,如果要变成int类型,不能改变原来的字段值,只能增加一个新的属性,这样才能保证老版本的正常使用。

缺点:返回数据过于冗余,不好判断哪个属性是哪个版本在用,也就无法定期下线指定版本。

2. URI中显式添加版本号

第一种,把版本号嵌入到URL路径中,例如:http://example.com/v3/item/list

第二种,把版本号放在RequestParam中,例如:http://example.com/item/list?version=3

第一种方便在服务端用不同的方法进行版本区分,第二种只能在同一个方法中进行判断区分。

有点:够直观,方便调试。

缺点:不符合RestFull原则(原则又不能当饭吃,解决问题才是王道),版本过多会不好控制。

3. 添加头信息控制版本

第一种, 在Header中添加自定义参数,例如:  api-version: 2 

第二种,在ContentType中添加版本号,例如:Accept: application/vnd.haveibeenpwned.v2+json  或 Accept: application/vnd.haveibeenpwned+json; version=2.0

优点:符合RestFull原则,保持各版本的URL一致。

缺点:不够直观,只能使用带有设置header的工具进行调试。

纵观各大网站的API,使用URL中显示添加版本号的最多,添加头部信息控制版本的次之,几乎没有强制使用统一版本的,so,you know~

关于版本过多难于维护的问题,解决办法是控制API使用周期,最多不超过5个版本同时在使用,并定期下架老旧的API版本。

相关文章

  • API版本控制

    服务API的版本控制历来没有一个完美的解决方案,本篇列出了业界常见的三类API版本控制方案,每一类中又有1到2种实...

  • api版本控制

    我们假设API接口的域名名为api.tp5.com,并且以两个版本v1和v2为例(注意,版本号仅为主版本,小版本应...

  • PHP-API接口版本控制的问题

    api 接口版本控制找了一下资料总共有几种类型 不设定版本模式意味着每个API只提供一个版本,如果要修改本API,...

  • RESTful API如何进行版本控制

    本文将帮助您理解为什么需要版本控制,以及如何对REST API进行版本控制。我们将讨论4种版本控制的方法,并比较不...

  • SpringMVC Api接口版本控制

    SpringMVC Api接口版本控制 1. 问题 ​ 后端服务在提供api接口时,随着业务的变化,原有的接口...

  • RESTful API版本控制策略

    做RESTful开放平台,一方面其API变动越少, 对API调用者越有利;另一方面,没有人可以预测未来,系统在发展...

  • API 版本控制【 Eolink 翻译】

    版本控制是创建和管理软件产品多个版本的方法。它能帮助用户根据自己的需求来决定使用哪个版本。这种方法同样适用于 AP...

  • SpringBoot 优雅控制API版本

    在实际工作中,由于接口功能做了不兼容变更,因此需要在原接口基础上增加版本控制,以示区分。 何时进行版本控制?这里引...

  • iOS开发之Swift篇(5)—— 控制流

    目录 版本 控制流 for-in switch 检测API可用性 版本 Xcode 11.0Swift 5.1 控...

  • api版本控制的几种方式!

    一、通过url后面跟参数版本,例如:xxx.com?version=v1,兼容项目,一般不建议这么使用。 二、通过...

网友评论

    本文标题:API版本控制

    本文链接:https://www.haomeiwen.com/subject/spricftx.html