是否需要做版本控制?

  • 出入参保持不变,迭代对app无感知,不需要版本控制
  • 如果对比之前新增或者减少了参数,但是可以通过给默认值或者兼容零值的方式兼容老逻辑,不需要版本控制
  • 其他情况需要进行版本控制

版本控制的几个方案

灰度部署,通过nginx分发

需要服务器机器支持灰度部署,比如目前服务器有两套,一套做灰度一套新版本。在请求的时候带上app版本号,通过nginx控制分发到灰度还是新版本。

优点:可以通过监控灰度流量知道还有多少用户没有升级app,当灰度的流量降低到一定程度时可以将灰度机器也更新成新的代码。无论是前端还是后端都对代码迭代无感知。
缺点:需要硬件服务器的支持。版本迭代很快的时候不适用。

在url中使用版本编号,通过拦截器分发

比如login接口,1.0版本url可以设置为
https://xxx.xxx/lv1/login/xxx
2.0版本url设置为
https://xxx.xxx/lv2/login/xxx

在处理路由的时候分开处理。

在请求参数中使用版本号

在请求参数中新增版本号参数,比如携带在header或者请求参数中,服务端拿到版本号参数之后对版本进行判断,然后走不通的处理逻辑。比如:

if (version > "1.6.1") {//xxxxx
} else {//xxxxx
}这个会导致代码很乱,各个版本的逻辑混杂。当更新频率很高的时候,代码中会出现很多地方进行版本判断,整体很杂乱。

app版本控制的几种方式相关推荐

  1. android 点赞姓名列表,从类型和列表内容分析:APP点赞的3种方式

    原标题:从类型和列表内容分析:APP点赞的3种方式 收集了大量APP点赞列表,通过对比,主要有三种方式.三种方式都从APP的类型.点赞的列表内容量两个方向来分析. 如下图: 一.点赞列表和评论.转发. ...

  2. 详解移动App开发的几种方式和各自详细的优缺点,以及如何选择App开发模式,最全总结,一次讲清

    移动App开发的几种方式 原生App,即NativeApp WebApp HybridApp,(完全依赖原生App中的WebView组件,本质上只是对WebView组件做更多的扩展,为它提供更多的ap ...

  3. API 版本控制的几种方式

    个人建议:用content type,即放在Header里面!比如加一个Version:1.4.3 这篇文章写得很好,介绍了三种实现web api版本化的三种方式.我从评论里又收集到两种方式,所以一共 ...

  4. App打包的两种方式

    在HBuilder上对APP提供了两种打包方式,云打包和本地打包,下面主要对这两种打包方式做个介绍 两者的区别:云打包相对简单,但是每天最多只能打包五次,而且在高峰期打包时间可能会很长,本地打包相对比 ...

  5. 抖音短视频APP开发通过三种方式绘制图片

    (一)ImageView绘制图片 (1)将图片分别放入mipmap-hdpi.assets (2)布局文件: <?xml version="1.0" encoding=&qu ...

  6. ios app安装的四种方式

    第一种,用户直接通过App Store下载安装 苹果官方通过非对称加密生成一对公私钥,在iOS设备内置了一个公钥,在苹果后台保存了对应的私钥,在开发者把app上传到App Store时,苹果用私钥对这 ...

  7. 实力分享:我铺app渠道的几种方式

    我曾经是一个app的渠道推广人员,负责app的渠道推广,下面就说说我铺渠道的方式. 我把渠道分为几类,手机系统官方商店,手机厂商商店,运营商商店,第三方应用商店,下载站等等. 1.先铺大的应用商店 要 ...

  8. 防护IOS APP安全的几种方式

    1.URL编码加密 对iOS app中出现的URL进行编码加密,防止URL被静态分析 2.本地数据加密 对NSUserDefaults,sqlite存储文件数据加密,保护iOS app的帐号和关键信息 ...

  9. 移动app开发的几种方式

    原生App->NativeApp WebApp->在手机浏览器打开的应用(如:黑马头条) HybridApp:合二为一 跨平台的App 其他类型的开发:小程序,微信公众号,快应用

  10. APP软件的几种开发方式

    移动互联网行业的发展大家有目共睹,在众多的行业里面,APP开发独占鳌头,这是为什么呢?原因就在于APP开发符合当下移动互联网行业发展的现状,更是牢牢地抓住了移动用户端的需求,从而逐渐称霸了移动互联网行 ...

最新文章

  1. 小记mysql备份同库中一张表的历史记录
  2. as无效 mysql_MySQL 全文索引实现简单版搜索引擎
  3. CodeForces 157C Message
  4. redis pub/sub 聊天
  5. SpringMVC获取Request,Response, Session对象
  6. CTreeCtrl的用法
  7. 通过Image 对象动态装载图片,不可能立即得到图片的问题
  8. 有法院被执行人记录还能贷款吗?
  9. 尬出天际!和导师微信聊天大型翻车现场!
  10. 手机html滚动原理,手机滚动-如何实现惯性滚动
  11. 哪些程序员在围观 996.ICU?Python 爬取 40000 条 GitHub 数据告诉你!
  12. android return 如何跳出两个循环_关于不得不学的Android知识之消息机制
  13. 第一篇博客:A+B Problem
  14. 如何在 Mac 上使用屏幕保护程序?
  15. EXCEL 制作多簇并列的堆积柱形图
  16. 远程访问服务器上的Jupyterlab
  17. C++中的protected
  18. [windows Tools] windows程序打包工具-Advanced Installer 10.0
  19. 2022年底了,你们公司还好吗?我这里不太好
  20. 环境配置之Keepass

热门文章

  1. 京东页面html前台代码,京东页面代码
  2. 火热的区块链技术,也能解决文化领域的这些痛点
  3. Sniffer数据报文解码详解
  4. 航空插头的环境性能科普
  5. WindwosServer系统一些设置【网卡驱动修复】【安装UWP应用】【服务器管理取消开机自启动】
  6. 一篇文章理清产品、运营、营销之间的概念和关系
  7. Java Swing
  8. 2018-08-14 UnmarshalException: 意外的元素 (uri:, local:customer)
  9. 88年的世界杯历史,用Python带你回顾!
  10. 非接触IC卡读写模块MFRC530的工作原理及其应用