微信小程序request请求封装,session封装,会话超时处理
直接上代码,代码中写了很详细的注释
// 同时发送异步代码的次数
let ajaxTimes = 0;
export const request = (params, method) => {
let header = {
...params.header,
"Cookie": getApp().globalData.cookieStr,
'loc':'ajax'
};//头部,小程序的头部是默认的
let data = {
...params.data,
verify_session_channel:'03'
}//数据
ajaxTimes++;
// 请求没有完成时,显示“加载中”的效果
wx.showLoading({
title: "加载中",
mask: true
});
// 定义公共的url
const baseUrl = "https:填你自己的域名";
return new Promise((resolve, reject) => {
wx.request({
...params,//接口名
data,
timeout:300000,
header,
method: method || "POST",//请求方式做了处理,不填写时,默认为post请求
url: baseUrl + params.url,//域名+接口名
success: (result) => {
let sessionArr = result.cookies.filter((item) => {
return item.includes('JSESSIONID') ? item : '';
});
//记录请求cookie,以便保持请求cookie不变
if(!getApp().globalData.cookieStr) {
getApp().globalData.cookieStr = sessionArr[0];
}
//以下是我的项目中对会话超时的处理,可能会与你有许多的不同,可以忽略或删除,如果你也要做会话超时的处理,可以作为参考
if(result.data.STATUS == "offline"||result.data.STATUS == "timeout"){//会话超时,会返回STATUS 字段为“timeout”
getApp().globalData.cookieStr = '';//清空cookie
wx.showModal({
content: '会话超时,请重新登录',
showCancel: false,
success: (result) => {
wx.navigateTo({
url: '../../pages/login/login',
});
}
});
}else{
resolve(result.data);
}//会话超时处理结束(可删除)
console.log(getApp().globalData.cookieStr)
},
//失败时
fail: (err) => {
reject(err);
},
//请求完成,不管是否成功
complete: () => {
ajaxTimes--;
if (ajaxTimes === 0) {
// 关闭正在等待的图标
wx.hideLoading();
}
}
});
});
}
注意
上面的代码我在其中写了一段对会话超时的处理,很有可能与你的不同,因此可删除,可删除,可删除!当然,做修改或参考也行
用法
这个简单,导入就行了,from后面是路径,index是我封装request的文件名。上代码:
import { request} from "../../request/index";
最后
欢迎大家点赞评论