首先想要封装一个请求,要知道需要的参数,想要怎么调用。
请求里的重要的参数有 url data (这里请求方式默认是post)
想要promise的方式进行链式操作
第一步
建立一个公共函数的文件api.js
创建一个函数 myRequest 两个参数 url data
const myRequest = (url,data) =>{
const baseUrl = 'XXX';//这里是基础url
const data = data || {};//对data进行容错处理,
//如果项目里面有一个参数是必须或者是经常有的可以在这里传过去
if (wx.getStorageSync("sessionid")) {
data.sessionid = wx.getStorageSync("sessionid");
}
}
第二步
return 一个promise函数
return new Promise((res,rej) => {
wx.request({
url: baseUrl+url,
method:"POST",
data:data,
header: { 'content-type': 'application/json' },
success(obj){
},
fail(err){
rej(err);
}
})
})
第三步
这时候已经得到了小程序success里的结果
结果里面我们需要用到的是data,但是我们不能直接取obj.data,因为success 不一定是200 有可能是404之类的函数,所以我们要判断一下
xhr.status >= 200 && xhr.status < 300 || xhr.status == 304
所以最终代码是这样子的
const myRequest = (url,data) =>{
const baseUrl = 'XXX';
const data = data || {};
if (wx.getStorageSync("sessionid")) {
data.sessionid = wx.getStorageSync("sessionid");
}
return new Promise((res,rej) => {
wx.request({
url: baseUrl+url,
method:"POST",
data:data,
header: { 'content-type': 'application/json' },
success(obj){
if (obj.statusCode >= 200 && obj.statusCode < 300 || obj.statusCode === 304){
res(obj.data);
}else{
rej({
msg: `网络错误:${obj.statusCode}`,
detail: obj
});
}
},
fail(err){
rej(err);
}
})
})
}
如何调用
myRequest.myRequest('xxx', { a:1}).then(function(res){
console.log(res);
}).catch(function(res){
console.log(res);
})