微信小程序封装request请求,最完整版

1 篇文章 0 订阅
1 篇文章 0 订阅

promise封装微信小程序请求方式

(以下代码直接拿来就可以用)

const HTTPS_HOST = "http://192.168.0.29:8080" // w
// const HTTPS_HOST = "http://192.168.0.10:8080" // l

function dealResult(res, resolve, reject) {
  let code = res.code || res.data.code;
  if (res.errMsg == 'openDocument:ok') {
    resolve(res);
  } else if (code === 200) {
    resolve(res.data);
  } else if (code === 401) {
    wx.showToast({
      title: '登入已过期',
      icon: 'error',
      duration: 2000
    });
    wx.reLaunch({
      url: '/pages/login/login'
    })
  } else if (code === 500) {
    wx.showToast({
      title: res.data.msg || "",
      icon: 'none',
      duration: 2000
    })
    resolve(res.data);
  }
}

function request(options, type) {
  let params = options.data || {};
  return new Promise((resolve, reject) => {
    var token;
    wx.getStorage({
      key: 'token',
      success(res) {
        token = res.data;
        getHttp(token, params, options, type, resolve, reject)
      },
      fail(res) {
        if (options.url != "/auth/login" && options.url != "/code") {
          return;
        } else {
          getHttp(token, params, options, type, resolve, reject)
        }
      }
    })
  })
}

function getHttp(token, params, options, type, resolve, reject) {
  // 通用接口拦截
  if (typeof type == 'undefined') {
    wx.request({
      header: {
        'content-type': 'application/json',
        'appSign': 'wxapp',
        "Authorization": "Bearer " + token
      },
      ...options,
      data: params,
      url: HTTPS_HOST + options.url,
      success(res) {
        dealResult(res, resolve, reject);
      },
      fail(err) {
        wx.hideLoading()
        // 错误处理
        wx.showModal({
          title: '提示',
          showCancel: false,
          content: '请求超时,请检查网络!',
          success: function () {
          }
        })
        reject(err);
      }
    });
  } else if (typeof type != 'undefined' && type == 'downloadFile') {
    // 下载预览
    wx.downloadFile({
      ...options,
      url: HTTPS_HOST + options.url,
      header: {
        'appSign': 'wxapp',
        "Authorization": "Bearer " + token
      },
      success(res) {
        const filePath = res.tempFilePath;
        wx.openDocument({
          filePath: filePath,
          fileType: 'pdf',
          success: function (res) {
            console.log('打开文档成功');
            dealResult(res, resolve, reject);
          },
          fail(err) {
            console.log('打开文档失败:', err)
          }
        })
      },
      fail(err) {
        reject(err);
      }

    })
  } else if (typeof type != 'undefined' && type == 'uploadFile') {
    wx.uploadFile({
      ...options,
      url: HTTPS_HOST + options.url,
      header: {
        'appSign': 'wxapp',
        "Authorization": "Bearer " + token
      },
      success(res) {
        // const data = res.data;
        res = JSON.parse(res.data)
        dealResult(res, resolve, reject);
      },
      fail(err) {
        console.log('err:', err)
        reject(err);
      },
      complete(err) {
        // console.log('comp:', err)
        reject(err);
      }
    })
  }
}


export default request;


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值