小程序封装 wx.request

1、方法一

const url = require("./url.js");
const baseUrl = require("./baseUrl.js");
const RSA = require('./rsa') // RSA加密: https://blog.csdn.net/weixin_46258341/article/details/131577648
const log = require('../log') // 小程序实时日志: https://blog.csdn.net/weixin_46258341/article/details/131703304

function request(baseUrl, url, method, data, needToken = true) {
  return new Promise((resolve, reject) => {
    let header = {
      'content-type': 'application/json'
    }
    wx.request({
      url: baseUrl + url,
      method,
      data: needToken ? {
        encryptData: RSA.rsaEncrypt(JSON.stringify(data))
      } : data,
      header,
      success(res) {
        if (method == 'get') {
          resolve(res.data)
        } else {
          let result = null
          res.data.encryptData ? result = JSON.parse(RSA.rsaDecrypt(res.data.encryptData)) : result = res.data
          console.log('数据处理(解密)', url, res.data.encryptData ? result = JSON.parse(RSA.rsaDecrypt(res.data.encryptData)) : result = res.data);
          if (res.statusCode === 200) {
            log.info(`res.statusCode: 200; url: ${url}`, result)
          } else {
            log.error(`result.statusCode: ${result.statusCode}; url: ${url}`, result)
          }
          resolve(result)
        }
      },
      fail(err) {
        log.error(`fail err;  url: ${url}`, err)
        reject(err)
      }
    })
  })
}

module.exports = {
  request,
  url,
  baseUrl
}

2、方法二

const tools = require("../utils/tools.js");
const url = require("./url.js");
const baseUrl = require("./baseUrl.js");
const RSA = require('./rsa')
const log = require('../log')
// 自定义请求头
var header = {
  'Accept': 'application/json',
  'content-type': 'application/x-www-form-urlencoded'
}

// get
function get(baseUrl, url, data, cb) {
  wx.request({
    url: baseUrl + url,
    method: 'get',
    data,
    header,
    success: function (res) {
      if (res.statusCode === 200) {
        log.info(`res.statusCode: 200; url: ${url}`, res)
      } else {
        log.error(`res.statusCode: ${res.statusCode}; url: ${url}`, res)
      }
      tools.isFunction(cb) && cb(res.data);
    },
    fail(err) {
      log.error(`fail err;  url: ${url}`, err)
    }
  })
}

// post
function post(baseUrl, url, data, cb, needToken = true) {
  (needToken && wx.getStorageSync('token') != '') && (data['token'] = wx.getStorageSync('token'))
  console.log('post 参数', data);
  wx.request({
    url: baseUrl + url,
    method: 'post',
    data: needToken ? {
      encryptData: RSA.rsaEncrypt(JSON.stringify(data))
    } : data,
    header: header,
    success: function (res) {
      let result = null
      // console.log(res);
      res.data.encryptData ? result = JSON.parse(RSA.rsaDecrypt(res.data.encryptData)) : result = res.data
      console.log('数据处理(解密)', url, res.data.encryptData ? result = JSON.parse(RSA.rsaDecrypt(res.data.encryptData)) : result = res.data);
      if (res.statusCode === 200) {
        log.info(`res.statusCode: 200; url: ${url}`, result)
      } else {
        log.error(`result.statusCode: ${result.statusCode}; url: ${url}`, result)
      }
      tools.isFunction(cb) && cb(result);
    },
    fail(err) {
      log.error(`fail err;  url: ${url}`, err)
    }
  });
}

// 导出
module.exports = {
  url,
  baseUrl,
  get,
  post,
}
var tools = {};

function isType(type) {
  return function(obj) {
    return Object.prototype.toString.call(obj) === "[object " + type + "]";
  };
}
tools.isObject = obj => {
  return isType("Object")(obj);
};

tools.isString = obj => {
  return isType("String")(obj);
};

tools.isNumber = obj => {
  return isType("Number")(obj);
};

tools.isBoolean = obj => {
  return isType("Boolean")(obj);
};

tools.isArray = obj => {
  return isType("Array")(obj);
};

tools.isFunction = obj => {
  return isType("Function")(obj);
};

tools.isUndefined = obj => {
  return isType("Undefined")(obj);
};

tools.jsonStringify = function(obj) {
  try {
    return JSON.stringify(obj);
  } catch (e) {
    return '';
  }
};

tools.jsonParse = function(obj) {
  try {
    return JSON.parse(obj);
  } catch (e) {
    return null;
  }
};

tools.toNorms = function(array) {
  var mphone = array.substring(0, 3) + '****' + array.substring(7, 11);
  return mphone;
}


module.exports = tools;
var api = require('../../api/index')

// baseUrl: http://...
// url: /banners; 页面路径

// 方法一
var banner = {
  banners: () => api.request(api.baseUrl.host, api.url.Banners, 'get', {}, false)
};

// 方法二
banner.banners = function () {
  return new Promise((resolve, reject) => {
    api.get(api.baseUrl.host, api.url.Banners, {}, function (response) {
      if (response.code === 10000) {
        var res = response.result
        resolve(res);
      } else {
        reject(response);
      }
    })
  })
}


module.exports = banner;

3、使用

var bannerAPI = require('../../../model/home/banner')

getBanner() {
  var self = this;
  wx.showLoading({
    title: '数据加载中...',
  })
  bannerAPI.banners().then(res => {
    self.setData({
      bannerList: res
    })
    wx.hideLoading()
  })
},

猜你喜欢

转载自blog.csdn.net/weixin_46258341/article/details/131723983