说说APP接口中的版本控制

引言

接口是APP的重要组成部分,数据是APP的核心,接口是链接APP和数据的纽带。安全

通常状况下,APP中会有大量的接口,再加上版本的变化,接口的升级,一个接口
可能会衍生出不少个稍有差别的接口,这个时候接口若是维护的很差,后边会乱为
一锅粥,客户端不一样版本使用不一样的接口名(xxxv1,xxxv2,xxxv3.....)优化

这个对客户端来讲貌似是很蛋疼的事情,若是能把版本控制彻底放到服务端是否是
更友善点,也会比客户端灵活不少,发版出去以后也能够很优雅的修改。操作系统

设计

这个并不是我凭空想出来的,是在公司里面开发的时候无心中发现的,以为设计的还挺好,整理总结了下,拿出来分享下。知识应该是开源共享的。设计


客户端发出去的版本token是固定不变的。
这里面有下面几个要点:版本控制

  • token,使用token间接的标记请求的接口版本,这么作也在必定程度上防止了不少无用的请求,若是使用的是https传递信息,就更安全了,根本截获不到这个token
  • server中的token => interface versionmap,保存了token和对应接口的版本号,请求来了以后会先根据这个寻找对应的接口版本。
  • interface{num}目录,每一个目录对应一个版本,根据请求的接口读取对应目录下的接口配置文件,找到最终要执行的具体接口。

http://xxxx.xxxx.com/module/controller/list?token=6918b5e0567c7d47314c10ed413e3f95这个请求最终会打到listv2这个接口。code

这样就能够在服务端灵活的配置接口了,客户端只要每次请求的时候带上默认的token参数,就能够获得本身想要的了,彻底不须要关心版本的问题。server

扩展设计

固然了,若是还有其余信息的话也能够带在token中,好比说客户端操做系统类型,咱们能够将token扩展为{clientType}_token,这样token中就附带了客户端的信息,能够很轻松的获取到客户端类型,根据不一样的类型也能够作一些想作的事情.blog

总结

仍是那句话,有些司空见惯的东西并非想象的那么简单,可能也是前辈门通过屡次总结优化出来的。token

本期名言警句(来自鲁豫对健林的采访)接口

小胜靠智,大胜靠德

相关文章
相关标签/搜索