封装wx.request

configs.js

const env = 'internal';

const configs = {
  internal: {
    origin: 'https://internal.wang.com/customer',
    originActivity: 'https://internal.wang.com/activity',
    originPay: 'https://internal.wang.com/pay',
    originGlobalpt: 'https://internal.wang.com/globalpt',
    oss: 'https://cc-tech.oss-cn-shenzhen.aliyuncs.com',
    webOrigin: 'https://mall-mini.caichengwang.cn',
    activityOrigin: 'https://mall-activity.caichengwang.cn',
    mixedOrigin: 'https://mixed.caichengwang.cn',
    getEnv: 'https://internal.wang.com/gateway/latest',
    version: '2.4.0.5',
    shareVersion: '1.0.0',
    amapKey: 'ac94c3856b924f71884c45f935d65fad',
    tmplIds: ['a7g8blYXv0drSZMoWM_tObxzzOku-eRgOVxykWSQElw']
  },
  //production: {
    //  origin: 'https://gateway.wang.com/customer',
    //  originActivity: 'https://gateway.wang.com/activity',
      //originPay: 'https://gateway.wang.com/pay',
      //originGlobalpt: 'https://gateway.wang.com/globalpt',
     // oss: 'https://cc-tech.oss-cn-shenzhen.aliyuncs.com',
     // webOrigin: 'https://mall-mini.wang.com',
     // activityOrigin: 'https://mall-activity.wang.com',
     // mixedOrigin: 'https://mixed.wang.com',
      //getEnv: 'https://gateway.wang.com/gateway/latest',
     // version: '2.4.0.24',
     // shareVersion: '1.0.0',
     // amapKey: 'ac94c3856b924f71884c45f935d65fad',
     // tmplIds: ['cXfu9mWbja25UJKSsIlkUTxH3PyMVOSjMH3877RMihk']
  //  }
};

export default configs[env];

request.js

import configs from '../configs/index';
import MD5 from './md5';
import qs from './qs/qs';

const methods = ['get', 'post', 'put'];

class WxRequestClass {
    apiMethods;
    token;

    constructor(token) {
      this.apiMethods = {};
      this.token = token;
    }

    init() {
      const header = {
        'content-type': 'application/json',
        sign: '',
        CCWTOKEN: '',
        cookie: ''
      };
      let sign;
      methods.forEach((method) => {
        this.apiMethods[method] = (url, data) =>
          new Promise((resolve, reject) => {
            const token = this.token;
            if (method === 'get') {
              clearNull(data);
              sign = MD5(
                qs.stringify(data, {
                  skipNulls: true
                }) + token
              );
            } else {
              clearNull(data);
              sign = MD5(data ? JSON.stringify(data) + token : token);
            }
            header.sign = sign;
            header.platform = 5;
            header.CCWTOKEN = token;
            header.cookie = 'CCWTOKEN=' + token;
            wx.request({
              url: url.indexOf('https') > -1 ? url : configs.origin + url,
              data,
              method,
              header,
              success(res) {
                dealHttpCode(
                  res,
                  (msg) => showMsg(msg),
                  (resData, flag) => {
                    if (flag) resolve(resData.data);
                    else {
                      wx.reportAnalytics('httprequest', {
                        url: url.indexOf('https') > -1 ? url : configs.origin + url,
                        payload: JSON.stringify(data),
                        res: JSON.stringify(resData)
                      });
                      reject(resData);
                    }
                  },
                  url.indexOf('https') > -1 ? url : configs.origin + url,
                );
              },
              fail() {
                showMsg('请检查您的网络!');
              }
            });
          });
      });
    }
}

// 处理http状态码
function dealHttpCode(res, errcb, cb) {
  switch (res.statusCode) {
    case 200:
      dealCode(res.data, (data, flag) => cb(data, flag));
      break;
    default:
      errcb('网络错误!');
      break;
  }
}

function showModal(msg) {
  wx.showModal({
    title: '提示',
    content: msg,
    cancelText: '取消',
    cancelColor: '#000000',
    confirmText: '确定',
    confirmColor: '#3CC51F',
    complete: () => {
      wx.clearStorageSync();
      wx.reLaunch({ url: '/pages/packageIndex/views/index/index' });
    } });
}

// 处理业务code枚举
function dealCode(data, cb) {
  // 用户状态异常
  switch (data.code) {
    case 200:
      cb(data, true);
      break;
    case 9010:
      showModal(data.msg);
      cb(data, false);
      break;
    default:
      showMsg(data.msg);
      cb(data, false);
      break;
  }
}

function showMsg(msg) {
  wx.showToast({
    title: msg,
    icon: 'none',
    duration: 2000
  });
}

function clearNull(data) {
  if (data) {
    for (let key in data) {
      if (data[key] === null || data[key] === '' || data[key] === undefined || data[key] === 'undefined') { delete data[key]; }
    }
  }
}

export default WxRequestClass;

app.js


```bash
import WxRequestClass from './utils/request';
/** API - start */
  // 初始化api
  initApi() {
    const token = wx.getStorageSync('token') || '';
    const api = new WxRequestClass(token, this);
    api.init();
    wx.$api = api.apiMethods;
  },
  /** API - end */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值