18910140161

微信小程序ES6方法Promise封装接口

顺晟科技

2021-06-16 10:28:49

272

有开发小程序经验的,相信对微信API Request比较熟悉。对接接口时,大多数开发人员直接调用request方法来请求后台接口和呈现数据。诚然,api直接发起的对接接口开发速度很快,但是一旦有了更多的对接接口,这种简单直接的方法就有很多缺陷。

难以维持。如果域名改变或者接口名称改变,就要一个一个找接口名称,可能不清楚有多少文件调用了需要修改的接口,导致效率低下

难以管理。要知道用的是哪些接口是不可能的,除非一个个找出来总结,否则很难统一修改

重复代码。一些接口参数有很高的重用率,如令牌、代码等。总是写一两次调用接口,并且总是带着它来验证你是否登录了

承诺封装接口

如果你不知道ES6 Promise,建议你去https://www.jianshu.com/p/063f7e490e9a看看这个文档

1.在utils文件夹中创建三个js文件:base.js、https.js和ports.js

Base.js用于管理域名

Https.js用于请求前处理和请求后处理

Ports.js用于封装接口

第二,处理https.js,封装get和post请求,简单处理请求前后的问题

https.js:

//封装GET请求

function _get({url,数据}){

//为用户体验添加加载效果

wx . ShowLoAding({ title : ' LoAding ',mask : true });

返回新承诺((已解决,已拒绝)={

const obj={

url,

数据,

方法:'GET ',

success :(RES)=RES . status code===200?已解决(res.data):已拒绝(RES . data),

fail :(err)=拒绝(err),

complete :()={ wx . HideLoading();}

}

wx.request(obj)

})

}

//封装POST请求

function _post({url,data}){

//为用户体验添加加载效果

wx . ShowLoAding({ title : ' LoAding ',mask : true });

返回新承诺((已解决,已拒绝)={

const obj={

url,

数据,

方法: '开机自检',

success :(RES)=RES . status code===?已解决(res.data):已拒绝(RES . data),

fail :(err)=拒绝(err),

complete :()={ wx . HideLoading();}

}

wx.request(obj)

})

}

//导出包的_post方法

导出默认值{

_post,

获取(_ g)

}

第三,在base.js中保存域名和接口

base.js:

//域名

const test URL=' http://t . weather . sojson.com ';

const base={

/*测试界面*/

test 1: test URL '/API/weather/city/101030100 '

}

导出默认基数;

第三,准备打包一个接口,尝试打包test1接口

ports.js

从“”导入基础。/base . js ';

从“”导入https。/https . js ';

const ajax={

test1:()={

返回https。_get({ url: base.test1})

}

}

导出默认ajax

4.将打包好的接口导入App.js,并在App中实例化

5.调用封装的接口,看看它是如何工作的。在某个页面的onload中调用,调用代码如下:

getApp(). port . test1()。然后((res)={

“你能吗?”);

}).catch(()={console.error('怎么了?);});

效果如下:

第六,我还想对接其他接口。常用域名在base.js中有,封装接口在ports.js中有,管理简单有序,看着舒服。

源代码:https://gitee.com/murenziwei/wx_ports

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航