这些天团队里开始做小程序开发了,之前没做过,都是第一次,第一次的感觉大家都懂的。周末看了一下小程序项目的代码,在网络请求上发现了一些小问题,最终没忍住想了点办法把request封装了一下。下面来看看吧。
看项目代码时发现了下面几点问题:
- 网络请求都写在Page里,每个请求都要重复的写wx.request以及一些基础配置;
- 每个页面里都要处理相同类型的异常;
- 后端返的http status code为200以外时,并不能直接进入fail对应函数进行处理;
针对这些问题,首先在项目目录里新建了一个apis的目录,把所有与API请求的东西都放在这个目录里,如下图这样。
- 在构造函数里创建默认请求的http header,可以在header里配制一些内容,在对应请求方法中如果没有设置header参数,就使用此默认header参数;
- 以get post delete put等方法对request进行封装,在发起网络请求不需要重复的写wx.request({method:xxx})这些代码,只要调用getRequest、postRequest等方法就可以了;
- 在rquest的结果返回处理函数success中,判定服务端返回的状态代码,对于200状态代码的按业务处理成功处理,对于非200的状态码按异常处理。
- 预留统一异常处理函数处理接口,可以通过setErrorHandler来设置统一的异常处理,这样对于一些可以统一处理的异常就不用在业务页面里去重复处理了,例如后端返回401的代码,就可以统一转到登录页面让用户登录了;
- 此request不限定服务提供都,可以是自己开发的业务服务端,也可以用于第三方服务的调用;
/**
* name: api.js
* description: request处理基础类
* author: 徐磊
* date: 2018-5-19
*/
class request {
constructor