编程语言
首页 > 编程语言> > 微信小程序request 请求封装

微信小程序request 请求封装

作者:互联网

关于微信小程序request 请求接口的封装,在此记录一下。 

封装如下:request.js 文件

 

/**
 * 获取header
 */
function getCommonHeader() {
  let header = {
    'Content-type': 'application/x-www-form-urlencoded'
  };
  // 如果token有值则带上
  let token = wx.getStorageSync("token");

  if (token) {
    header = Object.assign({}, header, {
      'Authorization': 'Bearer ' + token
    });
  }
  return header;
};

/**
 * 网络请求
 */
function request(url, data = {}, header = {}, method = "POST", config = {}) {

  // header 空值处理
  let _header = {
    "content-type": "application/x-www-form-urlencoded"
  };
  if (Object.keys(header).length > 0) {
    _header = header;
  }

  let showToast = true,
    showLoading = true,
    loadingTitle = "加载中";
  // 默认显示toast
  if (config['showToast'] != undefined && config['showToast'] == false) {
    showToast = false;
  }
  // 默认显示loading
  if (config['showLoading'] != undefined && config['showLoading'] == true) {
    showLoading = true;
  }
  if (config['loadingTitle']) {
    loadingTitle = config['loadingTitle'];
  }

  return new Promise((resolve, reject) => {
    // 是否显示loading
    if (showLoading) {
      wx.showLoading({ title: loadingTitle, icon: 'none', mask: true });
    }

    wx.request({
      url: url,
      data: data,
      header: _header,
      method: method,
      success: (res => {
        
        if (showLoading) {
          wx.hideLoading();
        }

        // 服务器 非200 错误
        if (res.statusCode && res.statusCode != 200) {
          wx.showToast({ title: '服务器 ' + res.statusCode + ' 错误', icon: 'none' });
          reject(res);
          return;
        }

        if (res.data && res.data.Success == false) {
          // 业务状态非0 是否提示
          if (showToast) {
            wx.showToast({ title: res.data.ServerMsg, icon: 'none' });
          }
          reject(res);
          return;
        }
        resolve(res.data.Data);
      }),
      fail: (err => {
        if (showLoading) {
          wx.hideLoading();
        }
        if (err.errMsg.indexOf('url not in domain list') > -1) {
          wx.showToast({ title: '请求url不在合法域名中,请打开调试模式', icon: 'none' });
        }
        if(err.errMsg.indexOf('timeout')){
          wx.showToast({ title: '请求超时,请重新进入', icon: 'none' });
        }
        reject(err);
      })
    });
  });
};


/**
 * get 网络请求
 */
function getRequest(url, data = {}, header = {}, config = {}){
  return request(url, data, header, "GET",config);
}

/**
 * post 网络请求
 */
function postRequest(url, data = {}, header = {}, config = {}){
  return request(url, data, header, "POST",config);
}

/**
 * put 网络请求
 */
function putRequest(url, data = {}, header = {}, config = {}){
  return request(url, data, header, "PUT",config);
}

/**
 * delete 网络请求
 */
function deleteRequest(url, data = {}, header = {}, config = {}){
  return request(url, data, header, "DELETE", config);
}

module.exports = {
  getCommonHeader,
  postRequest,
  getRequest,
  putRequest,
  deleteRequest,
}

调用如下:下面以get 和put 为例,其余类似。

一):data 为传参数据,是一个对象。

二):config 可以传入showToast ,showLoading,loadingTitle,三个字段自定义是否显示和加载文案,默认为显示和 '加载中' 。

三):对于成功和失败后的返回结果,需要结合实际情况,修改对应的参数即可

api.js 文件

const utils = require('../request/request');
const baseUrl = 'https://xxxx'; 

module.exports = {

  // GET
  getUserInfo: function (data, config = {}) {
    return utils.getRequest(
      `${baseUrl}xxxxxxxx`,
      data,
      utils.getCommonHeader(),
      config
    );
  },

   // put 

  register: function (data, config = {}) {
    return utils.putRequest(
      `${baseUrl}xxxxx`,
      data,
      utils.getCommonHeader(),
      config
    );
  },
}

 

 

 

标签:封装,showToast,url,微信,request,data,header,config
来源: https://blog.csdn.net/qq_40247562/article/details/115004849