APP版本兼容,伤不起!
app,url,api2016-06-30
之前bert君一直从事web和微信公众号开发,基本没有接触过APP开发。
现在的工作,需要给APP客户端提供服务器接口。因为之前设计不周,在一次版本升级后,造成旧版APP用户无法正常使用,影响了系统订单的成交量,血的教训啊!
App跟网站不一样,即使你发新版了还是有很高几率用户不买账不更新的。所以最好在最初设计接口的时候就想的长远些,API的URL不能随便动,代码写的可扩展性高一些方便以后兼容,数据库中也可先预留好字段。
软件工程里面有个最重要的原则,叫做开闭原则,具体说来就是,软件应向增加开放,对修改关闭。也就是说,你可以添加功能,但是不要随意修改已有的功能。
基于这个原则,有一些多版本服务器接口的一些实践建议:
(1)API有版本区分
比如
https://api.example.com/v1/user/ID
https://api.example.com/v2/user/ID
https://api.example.com/v3/user/ID
(2)API可以与实现的业务逻辑适当分离
比如API只是做一些参数的识别与匹配,具体的一些业务逻辑放到单独的Business Layer去处理,比如老版本的接口少了个参数,不是特别致命,给老版本过来的请求加一个默认的参数;
(3)一般向下兼容2个版本
(4)从早期就有一个稳定的错误代码系统及处理规范。
大多数的服务器请求都会返回status\errorMsg\code之类的信息,我们可以在一开始就定义code=911是接口已过期请升级客户端,这样子可以避免后期维护太多的API版本,也能引导用户升级;
(4)最最底层的东西,一定要足够抽象, 能够应付长期的、可变的应用场景;
(5)小版本号尽量做到兼容,大版本号更新可以考虑强制升级;
(6)版本使用监控。
当观察到所有用户都使用新版本的客户端的时候,并保持一段时间的时候。放弃对老版本的维护,继而下掉老版本的资源。
如果你有什么想法和建议,可以给小编留言。