软件系统在整个生命周期当中会根据需求的不断变化进行不断的迭代更新,因此服务端对外提供的接口尽管功能未发生变化,但是实现的逻辑,代码也在不断的变化。如果只是简单的变化,对于接口调用者来说是无感知的,但是通常会出现一些突破性的变化,例如:

  • 接口新增字段
  • 接口字段类型变更
  • 接口字段由非必传变成必传

上述情况的出现,对于接口调用者来说必然是存在强烈感知的,通常为了减少接口调用者的感知,服务端代码就存在同样功能的接口,多个版本的情况,就出现了接口版本控制这个问题。

版本控制及实现方式:

1 请求参数控制

例如在HTTP请求当中不修改请求路径的情况下添加参数:
在请求的参数当中添加版本参数: HTTP://XXX.COM?version=1
在请求头HEADER当中添加版本参数:version:1
在请求头Content-Type: application/v1.json
以上三种均可以在请求参数当中进行版本的控制,并且不修改请求路径,相关代码实现如下:

   @GetMapping(value = "test",params = {"version=1"},headers = {"version=1"},consumes = {"Content-Type=application/v1.json"})public String getT2() {return "123456";}

2 URL路径控制

即版本是请求URL的一部分:例如:/v1/api/getUser, /api/getUser/v1。

3 域名服务控制

即请求路径不变,域名发生变化:v1.api.hjljy.cn/getUser,v2.api.hjljy.cn/getUser

总结

无论选用哪一种实现方式,同一个功能的接口版本不宜过多,避免造成较高的维护成本,同时尽可能的保证接口版本的稳定性和可读性(便于查找和排错)

相关文档代码

springboot-接口版本区分

API接口版本控制的实现方式相关推荐

  1. python rest api_Python调用REST API接口的几种方式汇总

    相信做过自动化运维的同学都用过REST API接口来完成某些动作.API是一套成熟系统所必需的接口,可以被其他系统或脚本来调用,这也是自动化运维的必修课. 本文主要介绍python中调用REST AP ...

  2. 支付宝开放平台api接口封装统一调用方式

    在对接支付宝过程中,发现支付宝每个接口例子,都定义了AlipayClient和xxxRequest.xxxResponse. 老的写法就是每次都去写new一个AlipayClient package ...

  3. 常用快递电子面单api接口及对接调用方式

    现在电商行业发展很快,很多企业订单量大,手写快递单比较慢,所以开通对接电子面单打印API接口就成了很多企业迫切需要的功能: 目前申请渠道目前有三个,快递公司.菜鸟和快递鸟.前两个对接接口需要一定的资质 ...

  4. Python调用API接口的几种方式

    本文主要介绍python中调用API的几种方式,下面是python中会用到的库. 1.urllib2 import urllib2, urllib github_url = 'https://api. ...

  5. yii2 提供接口给java_Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试 (转)...

    环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_ ...

  6. 企查查、天眼查、启信宝API怎么批量操作调用,API接口应用场景。

    企查查API:企业工商信用信息API数据接口 - 企查查开放平台 天眼查API:天眼查开放平台 | API数据接口 | 企业数据 - 天眼查 (tianyancha.com) 启信宝API:启信宝数据 ...

  7. Java API接口签名认证

    Java API接口签名认证 我们在进行程序开发的时候,一定会开发一些API接口,供他人访问.当然这些接口中有可能是开放的,也有可能是需要登录才能访问的,也就是需要Token鉴权成功后才可以访问的.那 ...

  8. 最新!中国天气网api接口调用,key获取方式,数据请求秘钥获取,城市id获取方法

    以前的天气获取方式已经不支持了,虽然能获取到数据,但是获取到的信息已经不对了. 中国天气网提供的最新接口需要数据请求秘钥key.而且有效期只有7天,用完了还要重新购买,很麻烦,但是获取到的内容绝对是最 ...

  9. 基于http协议的api接口对于客户端的身份认证方式以及安全措施[转]

    基于http协议的api接口对于客户端的身份认证方式以及安全措施 由于http是无状态的,所以正常情况下在浏览器浏览网页,服务器都是通过访问者的cookie(cookie中存储的jsessionid) ...

  10. ASP.NET Web API 入门 (API接口、寄宿方式、HttpClient调用)

    一.ASP.NET Web API接口定义 ASP.NET Web API默认实现了Action方法和HTTP方法的映射,Action方法方法名体现了其能处理的请求必须采用的HTTP方法 二.寄宿方式 ...

最新文章

  1. SpringCloud 面试题,最新SpringCloud 面试题,2020 SpringCloud 面试题
  2. Matlab编程与数据类型 -- 奇数阶魔方矩阵的编程
  3. 都9012年了,你还在手动部署代码吗(二)
  4. BZOJ 3732 Network
  5. EasyUI中combotree允许多选的时候onSelect事件会重复触发onCheck事件
  6. 走进AngularJs(六) 服务
  7. 剑指Offer--二进制中1的个数
  8. 第一次使用OD和IDA动静结合找出软件的注册算法
  9. 使用react的好处_react的优点是什么呀-问答-阿里云开发者社区-阿里云
  10. java cha r转string_JAVA String.format 方法使用介绍
  11. opencv-api fitEllipse
  12. ASPxGridView1用法-
  13. 蓝桥杯2014c++真题:扑克序列(next_permutation)
  14. html页面转换pdf.txt
  15. properties文件_spring boot 配置文件yaml和properties
  16. ms17-010 php版本,MS17-010补丁360版
  17. node.js 实现文件上传
  18. Windows 2003安装和配置活动目录服务 zz
  19. FOFA网络空间搜索引擎使用教程
  20. 大数据实战项目 -- 离线数仓

热门文章

  1. fastdb java_FastDB应用开发指南.pdf
  2. 网易我的世界qq版服务器维护中,网易《我的世界》官方发布Hypixel中国版服务器停止运营公告...
  3. 风险评估(Risk Assessment)
  4. mir2 client: review
  5. 通信知识宝典1 -- 如何让无线路由网速最快
  6. 针对Win10 Tensorflow-2.x 训练 线程冻结(假死、卡住、几个epoch后、中途停滞、CPU占用0%) 等问题的排查总结
  7. How to learn Japanese ?
  8. 微信小程序开发与公众号运营有什么区别
  9. iphone页面怎么实现固定工具栏 html css js,固定工具栏 data-position=fixed
  10. java中set和get用法_java中 set 和 get