对接 app 的接口,一个 app 有新老很多个版本,安卓甚至还有很多个渠道。例如一个商城列表,新( 1.1.1 )老( 1.1.0 )版本需要下发的不一样,这个时候用 if else 控制,过不了多久又有新( 1.1.2 )的版本需要上线,此时需要三个版本下发的列表不一样,还用 if else,这样的代码,久了之后,再看的话会跟吃屎一样难受。在考虑 app 不强制更新的情况下,百度了一圈发现没有什么好办法,请问大佬们有什么好的办法处理这种情况?
1
frandy 2020-08-07 12:10:47 +08:00
|
2
la2la 2020-08-07 13:31:07 +08:00
多个 if else 能解决的,嵌套不是特别深的就这样解决呗,只要代码封装的好,逻辑很清晰的
|
3
Rwing 2020-08-07 13:32:17 +08:00
可以考虑多版本共存啊,就是老的不下线,通过路由来区分
|
4
lazyfighter 2020-08-07 14:08:17 +08:00
接口向后兼容
|
5
Nostalgiaaaa 2020-08-07 14:19:11 +08:00
shop_list_v1
shop_list_v2 然后看流量,小于某个阈值直接返回请升级这种文案。 |
6
learningman 2020-08-07 14:27:56 +08:00
屎嘛,偶尔吃吃不影响身体健康
|
8
jasongaoj OP @Rwing 路由确实可以解决,当一个功能版本不同通过多个接口返回,可能会增加维护的成本,不过如果管理的好的话,也是一种不错的方案
|
9
jasongaoj OP @Nostalgiaaaa 是像你这样做的,但是免不了对 version 做 if else
|
11
jasongaoj OP @learningman 经常吃还是挺影响的
|
13
masker 2020-08-07 19:10:23 +08:00 via Android
客户端请求头加个 ver ?
|
14
smilekung 2020-08-07 20:41:43 +08:00
客户端请求时携带自身版本,后端可以在网关处理路由到不同的版本服务上,或者做一个专门的版本控制服务,后端编码处理不同的版本,之前我们一个服务里能嵌 4-5 个版本控制,变动频繁的就 app 内嵌 h5 吧 还能热更
|
15
yscg 2020-08-08 10:59:14 +08:00
了解一下 GraphQL https://graphql.cn/
|
16
xuanbg 2020-08-08 11:32:05 +08:00
路径加版本号。譬如 userapi/v1.0.0/users 。要新老版本同时存在的话,再加个接口:userapi/v1.0.1/users 。新的 APP 调用 userapi/v1.0.1/users 就行了。
|