说说APP接口中的版本控制
引言
接口是APP的重要组成部分,数据是APP的核心,接口是连接APP和数据的纽带。
一般情况下,APP中会有大量的接口,再加上版本的变化,接口的升级,一个接口
可能会衍生出很多个稍有差异的接口,这个时候接口如果维护的不好,后边会乱为
一锅粥,客户端不同版本使用不同的接口名(xxxv1,xxxv2,xxxv3.....)
这个对客户端来说貌似是很蛋疼的事情,如果能把版本控制完全放到服务端是不是
更友善点,也会比客户端灵活很多,发版出去之后也可以很优雅的修改。
设计
这个并非我凭空想出来的,是在公司里面开发的时候无意中发现的,觉得设计的还挺好,整理总结了下,拿出来分享下。知识应该是开源共享的。
客户端发出去的版本token
是固定不变的。
这里面有下面几个要点:
- token,使用token间接的标记请求的接口版本,这么做也在一定程度上防止了很多无用的请求,如果使用的是https传递信息,就更安全了,根本截获不到这个token
- server中的
token => interface version
map,保存了token和对应接口的版本号,请求来了之后会先根据这个寻找对应的接口版本。 interface{num}
目录,每个目录对应一个版本,根据请求的接口读取对应目录下的接口配置文件,找到最终要执行的具体接口。
http://xxxx.xxxx.com/module/controller/list?token=6918b5e0567c7d47314c10ed413e3f95
这个请求最终会打到listv2
这个接口。
这样就可以在服务端灵活的配置接口了,客户端只要每次请求的时候带上默认的token
参数,就可以得到自己想要的了,完全不需要关心版本的问题。
扩展设计
当然了,如果还有其他信息的话也可以带在token
中,比如说客户端操作系统类型,我们可以将token
扩展为{clientType}_token
,这样token
中就附带了客户端的信息,可以很轻松的获取到客户端类型,根据不同的类型也可以做一些想做的事情.
总结
还是那句话,有些司空见惯的东西并不是想象的那么简单,可能也是前辈门经过多次总结优化出来的。
本期名言警句(来自鲁豫对健林的采访)
小胜靠智,大胜靠德
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述