在实践中我们经常发现,很多同学都是直接请求调用和读取接口数据,而没有做状态码的判断,这在设计角度是非常不合理的。 另外,对于一些实时性要求不高的接口,更合理的做法应该是先把数据拉到本地缓存,再从缓存里读取数据展示给前台用户。
一、调用接口前必须先判断状态码
永远不能假设网络是通畅的,即使BAT等互联网大厂还是国字开头的大型企业,网络故障时有发生。尽管我们采取了一系列的技术手段来避免此类情况的发生,但一些计划外的网络故障依然无法彻底避免。因此,如果没做好HTTP网络状态码的判断,可能会导致你的项目产出意外的崩溃事件。除了HTTP状态码外,调用天行数据时,无论成功失败都会返回一个表示接口状态码的字段code和描述信息msg,方便大家判断当前请求接口时的各种状态。只有code等于200,才进行下一步的逻辑。更严谨一点的话,应该对你将读取的字段进行非空或者类型判断。
例如“土味情话”接口,在正常请求并成功返回数据时,code=200:
而在错误请求时:
所有状态码的解释在接口文档、接口申请、接口调试、调用记录页面都可以查到。
二、建议先调用接口数据到缓存
有些接口,例如“天气预报”,实时性要求并不高,不会一直都有更新。你完全可以每10分钟或者半小时调用一次接口,把接口返回的数据先setData(写入缓存),前台界面只读本地缓存里的数据而不是直接读API接口。这么做的好处,一是本地只读效率更高也更快,二是万一接口有问题,包括请求次数不足、超频等等,不会把接口错误直接抛给用户。正确的做法应该是,每次请求时进行一个当前time(时间)的判断,当缓存里的time小于当前time超过10分钟或半小时,就重新请求接口更新缓存里的数据。这样,无论是用户自己的网络有问题,还是API接口有问题,在用户看来都是毫无感知的,只有频繁打开才会发现似乎天气信息没变化而已。你可以做一个手动更新的按钮,并给出更新成功或者失败的提示。