顺晟科技
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
11
2022-12
28
1990-12
02
2022-09
17
2022-03
18
2021-11
29
2021-08