引言

接口是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这个接口。

这样就可以在服务端灵活的配置接口了,客户端只要每次请求的时候带上默认的token参数,就可以得到自己想要的了,完全不需要关心版本的问题。

扩展设计

当然了,如果还有其他信息的话也可以带在token中,比如说客户端操作系统类型,我们可以将token扩展为{clientType}_token,这样token中就附带了客户端的信息,可以很轻松的获取到客户端类型,根据不同的类型也可以做一些想做的事情.

总结

还是那句话,有些司空见惯的东西并不是想象的那么简单,可能也是前辈门经过多次总结优化出来的。

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

小胜靠智,大胜靠德

说说APP接口中的版本控制的更多相关文章

  1. WebApi Swagger 接口多版本控制 适用于APP接口管理

    最近研究了下swagger多版本的维护,网上的文章千篇一律,无法满足我的需求,分享下我的使用场景以及实现 演示环境:Visual Studio 2019.Asp.NET WebAPI.NET Fram ...

  2. 关于APP接口设计(转)

    最近一段时间一直在做APP接口,总结一下APP接口开发过程中的注意事项: 1.效率:接口访问速度 APP有别于WEB服务,对服务器端要求是比较严格的,在移动端有限的带宽条件下,要求接口响应速度要快,所 ...

  3. 关于APP接口设计

    最近一段时间一直在做APP接口,总结一下APP接口开发过程中的注意事项: 1.效率:接口访问速度 APP有别于WEB服务,对服务器端要求是比较严格的,在移动端有限的带宽条件下,要求接口响应速度要快,所 ...

  4. 关于APP接口设计 (转)

    转自:http://blog.csdn.net/gebitan505/article/details/37924711 1.效率:接口访问速度 PHP建议使用YAF框架. 最好使用JSON格式数据,因 ...

  5. app接口开发

    最近一段时间一直在做APP接口,总结一下APP接口开发过程中的注意事项: 1.效率:接口访问速度 APP有别于WEB服务,对服务器端要求是比较严格的,在移动端有限的带宽条件下,要求接口响应速度要快,所 ...

  6. APP接口自动化测试JAVA+TestNG(一)之框架环境搭建

    前言 好久不曾写点啥,去年换到新公司组测试团队与培养建设花费大量时间与精力,终于架构成型与稳定有时间可以打打酱油了.很久没有总结点啥,提笔想写的内容太多,先放APP接口自动化的内容吧,这个估计大家比较 ...

  7. 《PHP开发APP接口》笔记

    PHP开发APP接口 [TOC] 课程地址 imooc PHP开发APP接口 学习要点 APP接口简介 封装通信接口方法 核心技术 APP接口实例 服务器端 -> 数据库|缓存 -> 调用 ...

  8. Fiddler抓包测试App接口

    Fiddler抓包测试App接口 使用Fiddler对手机App应用进行抓包,可以对App接口进行测试,也可以了解App传输中流量使用及请求响应情况,从而测试数据传输过程中流量使用的是否合理. 抓包过 ...

  9. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [6] 版本升级接口开发

    判定 app 是否需要加密:通过 app 表中的 status 字段来判定,加密的字符串为 app 表中的 key 字段. 在获取的客户端和服务器端(数据库表中相应字段)的版本号不一致时,返回 dat ...

随机推荐

  1. Web报表工具FineReport的JS开发之字符串

    在报表开发过程中,有些需求可能无法通过现有的功能来实现,需要开发人员二次开发,以FineReport为例,可以使用网页脚本.API接口等进行深入的开发与控制. 考虑到JS脚本开发的使用较多,这里先先简 ...

  2. Java输入输出常用类Scanner

    Scaner类,使用获取键盘输入. public boolean DemoTest(){ Scanner input = new Scanner(System.in); System.out.prin ...

  3. Android任务栈的运行规律

    一:前台栈表示应用A,后台栈则是应用B 前台栈/taskAffinity/launchMode 后台栈/taskAffinity/launchMode ActivityB/com.lpn.teston ...

  4. iOS:小技巧(不断更新)

    记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...

  5. Google C++单元测试框架GoogleTest---GMock的CheatSheet文档

    CheatSheet文档中包含了GMock所有常用的东西,看了这个基本上就可以用它了,本文接上篇博文:Google C++单元测试框架GoogleTest---Google Mock简介--概念及基础 ...

  6. Android中使用java.util.Properties犯的错

    今天尝试使用java.util.Properties来保存应用配置,然而遇到了好几个问题,对于熟悉此内容的来说可能都是猪一样的错误,但难免有像我一样的新手再次遇到,希望此文能有所帮助. 错误1 jav ...

  7. QService 服务容器

    原理 服务容器 服务主体,反射执行业务类 管理器 对服务容器进行控制 测试服务 向一个文件写入内容 启用一个HTTP服务 以下为日志: 2015-06-15 11:50:47.5313 Info QS ...

  8. python学习笔记4-正则表达式

    import re -- 所有正则表达式相关的功能都包含在re模块中 re.sub() -- 字符串替换 >>> import re >>> s= "10 ...

  9. WPF 自定义窗口

    在WPF中,经常需要对窗口进行设置,下面讲讲常用的几个设置. 1.无边框窗口 WindowStyle="None" 窗口样式无 AllowsTransparency="T ...

  10. stm32 usb error : identifier "bool" is undefined

    .\usb\USB\usb_pwr.h(54): error:  #20: identifier "bool" is undefinedusb\USB\usb_pwr.h(54): ...