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()
})
},