接口设计
这里不讨论详细设计,只从项目开发角度考虑,关注点为开发效率和稳健性。
问题
APP 使用中最不可容忍的莫过于闪退问题,而许多 crash 源于网络请求的返回值格式非法。
目前我们的接口开发和使用存在几个问题:
- 无文档规范
- 参数约束不足
- 客户端缺少必要的判断
无文档规范会衍生如下问题:
- 服务端接口开发没有明确指导,可能会导致返回值非法,引发不可预知的一些错误
- 客户端开发人员可能需要等待服务端接口开发完毕才能进行开发,而后需要反复对接,因此效率低下
- 客户端开发人员和服务端开发人员对接过程中难免会有疏漏,因此效率继续低下
- 客户端缺少必要的判断,一方面原因是开发人员的不良习惯,另一方面也是因为没有明确的接口规范文档,增加了进行判断的难度和工作量
一些想法
稳健性
从稳健性的角度考虑,「约束」自然是一大关键字,客户端、服务端都应该作相应的约束和判断,以提高容错性,避免某一方异常直接导致crash。约束主要体现在参数和返回值的判断以及相应限制。
客户端方面:我建议对每个不同的接口都实现一个独立的 Request 类、每个类对请求的参数强制约束,非法则直接进入异常处理不再请求;Request 类中的返回数据,进行必要的合法判断,然后再将回调传递给 Controller 层。
效率
而从效率上考虑,对开发流程我有个简单的想法:
- 先确定接口设计,包括(协议、接口名、传参方法、参数、返回值格式等),要有明确的文档;此前我和同事用 Google Docs 进行效率挺高,当前在不符合国情的情况下,可以考虑搭建简单的网站(公网、局域网视需求而定),去保存/展示相关文档,以实现协作;这件事情由前台和客户端的同学共同确认,敲定之后不轻易修改。
- 明确接口设计之后,前台/客户端可以实现并行开发,保证各自代码的正确性,也可以避免一些多余的沟通成本。
- 双方开发完毕之后,再进行联调。