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: "服務不可用,服務器暫時過載或維護。",
}; 

針對於上方失敗的回調中,錯誤的端口號,進行比對


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM