说说app接口中的版本控制
引言
接口是app的重要组成部分,数据是app的核心,接口是连接app和数据的纽带。一般情况下,app中会有大量的接口,再加上版本的变化,接口的升级,一个接口可能会衍生出很多个稍有差异的接口,这个时候接口如果维护的不好,后边会乱为一锅粥,客户端不同版本使用不同的接口名(xxxv1,xxxv2,xxxv3.。。。。)
这个对客户端来说貌似是很蛋疼的事情,如果能把版本控制完全放到服务端是不是更友善点,也会比客户端灵活很多,发版出去之后也可以很优雅的修改。
设计
这个并非我凭空想出来的,是在公司里面开发的时候无意中发现的,觉得设计的还挺好,整理总结了下,拿出来分享下。知识应该是开源共享的。
客户端发出去的版本token是固定不变的。
这里面有下面几个要点:
token,使用token间接的标记请求的接口版本,这么做也在一定程度上防止了很多无用的请求,如果使用的是https传递信息,就更安全了,根本截获不到这个tokenserver中的token =》 interface versionmap,保存了token和对应接口的版本号,请求来了之后会先根据这个寻找对应的接口版本。
interface{num}目录,每个目录对应一个版本,根据请求的接口读取对应目录下的接口配置文件,找到最终要执行的具体接口。
http://xxxx.xxxx.com/module/controller/list?token=6918b5e0567c7d47314c10ed413e3f95这个请求最终会打到listv2这个接口。
这样就可以在服务端灵活的配置接口了,客户端只要每次请求的时候带上默认的token参数,就可以得到自己想要的了,完全不需要关心版本的问题。
扩展设计
当然了,如果还有其他信息的话也可以带在token中,比如说客户端操作系统类型,我们可以将token扩展为{clienttype}_token,这样token中就附带了客户端的信息,可以很轻松的获取到客户端类型,根据不同的类型也可以做一些想做的事情。
总结
还是那句话,有些司空见惯的东西并不是想象的那么简单,可能也是前辈门经过多次总结优化出来的。
IIC-China 2010参展商展前专访:苏州雷度电子
土壤水分传感器电源要求不受土壤质地影响?
对于无人驾驶行业有哪些新看法?驭势科技未来的方向如何?
芯原AI-ISP技术带来创新的图像增强体验
医疗废物信息化收集管理系统
简单了解APP接口中的版本控制
MPC860控制FPGA配置
微型电池重要突破:6纳米的病毒制造电池
分析一个电路因WPE效应挂掉的案例
和胜股份公布2018年上半年财报营收4.49亿元,同比增长13.95%
消息称荣耀V40不会配置麒麟9000系列处理器
RFIC设计中的MOS变容管
国产计算GPU沐曦MXC500用时5小时完成功能测试
12V太阳能充电器电路设计
过欠压和浪涌保护器有什么区别
台物联网厂研华展望明年营收冲20亿美元
区块链技术应用在传媒领域的五大好处介绍
特斯拉的NACS连接器有何优势?
破解WiMAX物理层测试瓶颈(RS公司内部资料)
宁波智能传感器如何撬动千亿级产业集群