老铁们,问一个有版本的移动端和无版本的服务端兼容性的问题

2020-11-26 13:03:53 +08:00
 asanelder

背景:

一个产品,有移动端和服务端,移动端有版本,如 v1, v2 。服务端没有版本。

现在,服务端要实现新的功能,只有 v2 版本的支持,但 v1 版本的不支持。同时又不会对 v1 版本的功能产生影响。

问题:

服务端如何在提供新功能的情况下,不影响旧版本移动端的功能?

俺想到的方式有:

  1. 为新功能提供新接口,v2 版本的新功能调用新接口,新接口对 v1 版本是不可见的。
  2. 对旧的接口进行改造。在旧的接口中,根据移动端传来的版本信息做相应处理。

其实方式一的好处是可以为新的接口添加一个类似 @Version 的注解,这样可以很明显的看出一个接口是为哪个移动端版本服务的。

方式二的好处是可以复用旧接口的部分逻辑。当然,也可以优化一个,把要复用的部分提取出来,再实现新的接口。这样,即能复用旧的逻辑,又可以为新的接口注解版本信息。

俺之前没有直接对接移动端的服务端开发经验,有类似经验的铁子们能不能给俺普及一下行业的套路?或者最佳实践?

1044 次点击
所在节点    程序员
3 条回复
Porster
2020-11-26 13:36:49 +08:00
加新接口,app 可选升级
改旧接口,app 强制升级
janus77
2020-11-26 14:49:01 +08:00
两套 api path 共存,v2 的移动端请求 api/v2/xxx 。
lrvinye
2020-11-27 00:55:42 +08:00
请求路径带上接口版本

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

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

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

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

© 2021 V2EX