微信小程序request请求封装,session封装,会话超时处理

微信小程序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";

最后

欢迎大家点赞评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值