uni-app 封装的ajax 请求

function getHeader() {  //header头部
  return {
    "Accept":"application/json",
    'Content-Type': 'application/json; charset=utf-8',
    'ACCESS_TOKEN': `${token}`,
    "WECHAT_ID":'1',
  };
}
[{
    method: 'get',
    hasBody: false,
}, {
    method: 'post',
    hasBody: true,
}, {
    method: 'put',
    hasBody: true,
}, {
    method: 'del',
    hasBody: false,
}].map(i => {
    module.exports[i.method] = function(url, optOrData, opt) {
        var data;
        if (i.hasBody) {
            data = optOrData;
        } else {
            opt = optOrData;
        }

        var p = () => new Promise((resolve, reject) => {
            /*wx.showLoading();*/ //体验效果去掉加载圈
            uni.request({
                url: urlHandler(url), //对传入的uri进行前缀的添加,
                method: i.method.toUpperCase(),
                header: getHeader(),
                data: i.hasBody ? data : undefined,
                success: function(info = {}) {
                    // wx.hideLoading();
                    successHandler(resolve, reject, info.data, opt);
                },
                fail: function(info = {}) {
                    uni.hideLoading();
                    errorHandler(reject, info.data, opt);
                }
            });
        });
        
        // 等登录完毕后再执行
        if (false) {//需要暂停执行接口的判断,比如当执行登录的时候,需要暂停接口的请求
            return loginPromise.then(p).catch(p);
        } else { //继续执行余下接口
            return p();
        }
    }
});
function successHandler(resolve, reject, data = {}, opt = {}) { //成功的回调s
  if (data.code != 200 ) { //接口的拦截,如果接口返回 200以外 就执行 失败的回调方法
    return errorHandler(reject, data, opt);
  }

  if (opt.showSuccessToast) {
    wx.showToast({
      title: data.msg || '成功',
      icon: 'success'
    });
  }
  resolve(data);
}
function errorHandler(reject, data = {}, opt = {}) { //失败的回调
  if(codeMessage[data.code]){
    uni.showToast({
      title: codeMessage[data.code],
      icon: 'none'
    })
  }else if(data.msg){
    uni.showToast({
      title: data.msg,
      icon: 'none'
    })
  }
  reject(data);
}
const codeMessage = {
    200: "服务器成功返回请求的数据。",
    201: "新建或修改数据成功。",
    202: "一个请求已经进入后台排队(异步任务)。",
    204: "删除数据成功。",
    400: "发出的请求有错误,服务器没有进行新建或修改数据的操作。",
    401: "用户没有权限(令牌、用户名、密码错误)。",
    402: "要求付款。",
    403: "用户得到授权,但是访问是被禁止的。",
    404: "发出的请求针对的是不存在的记录,服务器没有进行操作。",
    405: "不允许此方法。",
    406: "请求的格式不可得。",
    410: "请求的资源被永久删除,且不会再得到的。",
    422: "当创建一个对象时,发生一个验证错误。",
    500: "服务器繁忙,请稍后重试。",
    502: "网关错误。",
    503: "服务不可用,服务器暂时过载或维护。",
}; 

针对于上方失败的回调中,错误的端口号,进行比对

posted @ 2020-08-17 12:01  浊酒一壶  阅读(4965)  评论(0编辑  收藏  举报