请教各位大佬接口版本控制的问题

2020-08-07 11:48:14 +08:00
 jasongaoj

对接 app 的接口,一个 app 有新老很多个版本,安卓甚至还有很多个渠道。例如一个商城列表,新( 1.1.1 )老( 1.1.0 )版本需要下发的不一样,这个时候用 if else 控制,过不了多久又有新( 1.1.2 )的版本需要上线,此时需要三个版本下发的列表不一样,还用 if else,这样的代码,久了之后,再看的话会跟吃屎一样难受。在考虑 app 不强制更新的情况下,百度了一圈发现没有什么好办法,请问大佬们有什么好的办法处理这种情况?

2679 次点击
所在节点    程序员
16 条回复
frandy
2020-08-07 12:10:47 +08:00
微软都头疼这种问题
la2la
2020-08-07 13:31:07 +08:00
多个 if else 能解决的,嵌套不是特别深的就这样解决呗,只要代码封装的好,逻辑很清晰的
Rwing
2020-08-07 13:32:17 +08:00
可以考虑多版本共存啊,就是老的不下线,通过路由来区分
lazyfighter
2020-08-07 14:08:17 +08:00
接口向后兼容
Nostalgiaaaa
2020-08-07 14:19:11 +08:00
shop_list_v1
shop_list_v2
然后看流量,小于某个阈值直接返回请升级这种文案。
learningman
2020-08-07 14:27:56 +08:00
屎嘛,偶尔吃吃不影响身体健康
jake361
2020-08-07 18:02:03 +08:00
@Rwing 可以考虑用新的路由来区分。 +1 。

新的版本,升级新的路由,我认为更加妥当啊, 当然需要客户端的配合了。
jasongaoj
2020-08-07 18:49:10 +08:00
@Rwing 路由确实可以解决,当一个功能版本不同通过多个接口返回,可能会增加维护的成本,不过如果管理的好的话,也是一种不错的方案
jasongaoj
2020-08-07 19:04:13 +08:00
@Nostalgiaaaa 是像你这样做的,但是免不了对 version 做 if else
jasongaoj
2020-08-07 19:06:17 +08:00
@la2la if else 啥问题都能解决,关键在于是否包装的好 /(ㄒoㄒ)/~~
jasongaoj
2020-08-07 19:07:08 +08:00
@learningman 经常吃还是挺影响的
jasongaoj
2020-08-07 19:07:59 +08:00
@frandy 突然舒服了很多,谢谢你
masker
2020-08-07 19:10:23 +08:00
客户端请求头加个 ver ?
smilekung
2020-08-07 20:41:43 +08:00
客户端请求时携带自身版本,后端可以在网关处理路由到不同的版本服务上,或者做一个专门的版本控制服务,后端编码处理不同的版本,之前我们一个服务里能嵌 4-5 个版本控制,变动频繁的就 app 内嵌 h5 吧 还能热更
yscg
2020-08-08 10:59:14 +08:00
了解一下 GraphQL https://graphql.cn/
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 就行了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/696407

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX