原因是我不想每次请求都复制粘贴那么长的请求地址,所以我把前边那一坨请求地址作为基础地址,只传后台给的路由就ok,而且,并不是每次请求都要显示正在加载,这对小程序体验很差,所以,我加了个形参,用来判断是否显示正在加载。最后根据后台给的状态码判断,所有的成功走resolve(.then),所有除了200以外走reject(.catch),然后将loading关闭。关于promise,我就不多讲了,以后有时间在开一篇。
嗷对了,还有token验证,如果项目有需求的话可以把token放入头字段中,每次请求都将token传给后台。
依旧老惯例,直接上代码
/** * @information 小程序请求方法封装 * @param {dialog} 是否显示正在加载提示 * @param {router} 后台路由地址 * @param {data} 请求参数 * @param {method} 请求方式 */ export class httpService { request (dialog, router, data = {} ,method ) { // 定义基础请求地址 let baseUrl = "https://www.easy-mock.com/mock/5ad7011f7e015b7701c45150/" //这里放基础地址 // token验证 let token = '' // 判断是否开启正在加载提示 dialog && wx.showLoading({ title: '玩命加载中', mask:true }) // 返回一个promise return new Promise((resolve,reject)=> { wx.request({ url:`${baseUrl}${router}`, data, method, header: { Accept:"application/json; charset=utf-8", token }, success (res) { // 判断成功走resolve,其他走reject res.statusCode===200? resolve(res.data) : reject(res.data) // 关闭正在加载 dialog && wx.hideLoading(),2000 }, fail (error) { // 请求错误提示 wx.showToast({ title: '服务器错误!', duration: 2000, icon: 'none' }) } }) }) } }