是否需要做版本控制?
- 出入参保持不变,迭代对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
}
这个会导致代码很乱,各个版本的逻辑混杂。当更新频率很高的时候,代码中会出现很多地方进行版本判断,整体很杂乱。