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版本控制

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