http=>require.js封裝

image.png
  1. require.js
/**
 * 網(wǎng)絡(luò)請(qǐng)求公共方法:
 *      1.基本的請(qǐng)求
 *      2.為了后續(xù),promise處理 :fetch 
 *      3.對(duì)數(shù)據(jù)的狀態(tài)處理  lodding toast
 *      4.請(qǐng)求頭處理 !!!機(jī)型 大小 系統(tǒng) 屏幕
 */
const store = require('../utils/store.js');
const Animation=require('../utils/animation.js')
const system = store.getSystemInfo();
const clientInfo = {
  "clientType": "mp",
  "appnm": "facility-access-miniprogram",
  "model": system.model,
  "os": system.system,
  "screen": system.screenWidth + "*" + system.screenHeight,
  "version": App.version
}

const successFun = (reslove, data) => {
  let obj = data
  reslove(obj)
};
const errFun = (reslove, data) => {
  if(data.statusCode==401){
    loginOut();
    return
  }
  let obj={
    statusCode:data.statusCode,
    errMsg:data.data['message']||data.data['msg']||'網(wǎng)絡(luò)請(qǐng)求失敗,請(qǐng)重新嘗試!'
  }
  Animation.hideToast()
  Animation.myToast('cancel',obj.errMsg);
  reslove(obj)
}
module.exports = {
  fetch: (url, data = {}, option = {},needToken=true) => {
    let {
      lodding = true, toast = true, method = 'get'
    } = option;

    return new Promise((reslove, reject) => {
      if (lodding) {
        wx.showLoading({
          title: '加載中...',
          mask: true
        })
      }

      let env = App.config.baseApi;
      let userInfo=store.getItem('userInfo')
      let header={
        "Content-Type": "application/json",
        "clientInfo": JSON.stringify(clientInfo),
      }
      if(needToken){
        header['Authorization']=store.getItem('token')['access_token']||null;
        header['RefreshToken']=store.getItem('token')['refresh_token']||null;
      }
      if (method == 'delete' || method == 'DELETE'){    
        if (data){
          let arr = [];
          for (let key in data){
            let value = data[key];
            if (value === null || value === undefined || value == 'null') {
              value = ''
            };
            if (Array.isArray(value)){
              value = data[key].toString();
            }
            arr.push(`${key}=${value}`);
          }           
          url += "?" + arr.join('&');
          data = '';
        }
      }
      wx.request({
        url: env + url,
        data,
        method,
        header,
        success(res) {
          if (res.statusCode == 200) { //請(qǐng)求成功
            if (lodding) {
              wx.hideLoading({
               fail:()=>{
               }
              });
            }
            successFun(reslove, res.data)
          } else { //請(qǐng)求失敗
            if (toast) {
              wx.hideLoading({
                fail:()=>{
                }
              });
              //Animation.myToast('forbidden','請(qǐng)求超時(shí)');
            } else {
              if (lodding) {
                wx.hideLoading({
                  fail:()=>{
                  }
                });
              }
            }
            errFun(reject, res)
          }
        },
        fail: (err => {
          let obj={
            statusCode:-1,
            data:{
              message:err.errMsg
            }
          }
          errFun(reject, obj)
        })
      })
    })
  }
};
const loginOut=function(){
  store.clear("token");
  store.clear("userInfo");
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容