前言
业务调整,需求变动,客户端和服务端代码的改动如何最大限度地照顾到老版本的兼容性
思考
- 面向对象的六大原则中,一个很重要的原则叫做开闭原则,具体说来就是,软件应向扩展开放,对修改封闭。也就是说,你可以添加功能,但是不要随意修改已有的功能
- 接口设计的核心在于抽象,底层逻辑 一定要足够抽象,需要与实现的业务逻辑适当分离, 能够应付长期的、可变的应用场景
- 接口要有版本区分,如/api/v1/android,/api/v1/ios ,/api/v2/android,/api/v2/ios
- 从早期就有一个稳定的错误代码系统及处理规范。我想大多数的服务器请求都会返回status\errorMsg\code之类的信息,我们可以在一开始就定义各种错误码(接口过期、用户信息过期、服务器异常、服务器升级中),这样子可以避免后期维护太多的API版本,也能引导用户升级
- 根据APP的更新频率,只允许同时两到三个版本存活,然后提醒客户端更新,不更新的话等到协议的版本过期了,就无法使用
做好兼容和容错
- 对于服务端返回的数据,尤其涉及类型判断的一定要做好容错,只处理当前版本支持类型,丢弃其它异常类型,避免接口更新(如添加新的支持类型)导致客户端无法处理导致的崩溃,当然异常数据的处理需要根据实际操作,在解析时处理,或者在逻辑判断时处理。
- 如果旧版本没处理好,那么接口就需要进行升级了,所以这个兼容和容错需要两方互相协作