解决代码统一调用问题,避免重复性在不同的page写这些代码,记录一下
加密封装【jsencrypt.js、enctypt.js】:
import JSEncrypt from './jsencrypt' //引入
// 加密
export function encrypt(key, txt) {
const encryptor = new JSEncrypt()
encryptor.setPublicKey(key) // 设置公钥
return encryptor.encrypt(txt) // 对数据加密
}
API调用文件封装【api.js】:
const http = require('./http');
const system = require('./system');
const upload = require('./upload');
const download = require('./download');
/*
* 上传接口
*/
const uploadFile = (path) => {
return upload('/xxx', path)
}
/*
* 客户下单 - 提交
*/
const getApply = (data) => {
return http('/xxx', data)
}
module.exports = {
uploadFile: uploadFile,
getApply: getApply
}
系统环境封装【system.js】:
/*
* token名称
*/
let token = "my_system";
/*
* 设置token
*/
const setToken = (user) => {
wx.setStorage({
key: token,
data: user
})
}
/*
* 获取token
*/
const getToken = () => {
return wx.getStorageSync(token)
}
/*
* 删除token
*/
const removeToken = () => {
wx.removeStorageSync(token)
}
/*
* 是否客户端
*/
const KHD = () => {
var value = getToken()
if (value && value.platformAppId === 'customer') {
return true;
}
return false;
}
/** 判定服务请求环境 */
const getHost = () => {
let envVersion = wx.getAccountInfoSync().miniProgram.envVersion;
let host = ''
switch (envVersion) {
case "develop":
host = "https://xxx"
break;
case "trial":
host = "https://xxx"
break;
case "release":
host = "https://xxx"
break;
}
return host
}
module.exports = {
setToken: setToken,
getToken: getToken,
removeToken: removeToken,
KHD: KHD,
host: getHost
}
请求封装【http.js】:
const access = require('./token.js');
const system = require('./system.js');
const request = (url, data, method = "POST") => {
return new Promise((resolve, reject) => {
let _time = setTimeout(() => {
wx.showLoading({
mask: true,
title: '请求中'
});
}, 800);
let _access = access.getToken();
let _system = system.getToken();
wx.request({
url: system.host() + url,
data: data,
method: method,
dataType: "json",
header: {
'content-type': 'application/json; charset=utf-8',
"accessToken": _access && _access.token ? _access.token : "",
"platformAppId": _system ? _system.platformAppId : "",
"matrixId": _system ? _system.matrixId : "",
},
success(res) {
if (res.data.code == 0) {
resolve(res.data.data);
return;
}
console.log("")
console.log("------------【start】------------")
console.log("---------请求地址------------")
console.log(url)
console.log("---------请求头部信息------------")
console.log(JSON.stringify({
'content-type': 'application/json; charset=utf-8',
"accessToken": _access && _access.token ? _access.token : "",
"platformAppId": _system ? _system.platformAppId : "",
"matrixId": _system ? _system.matrixId : "",
}))
console.log("---------请求数据------------")
console.log(JSON.stringify(data))
console.log("---------返回错误------------")
console.log(JSON.stringify(res))
console.log("------------【end】------------")
console.log("");
if (res.data.code == 11) {
access.removeToken();
wx.showModal({
title: "提示",
content: "登录态失效,请重新打开小程序",
showCancel: false
});
reject();
return;
}
if (res.data.message) {
wx.showModal({
title: "提示",
content: res.data.message,
showCancel: false
});
} else {
wx.showModal({
title: "提示",
content: "网络繁忙,请稍后再试!",
showCancel: false
});
}
reject();
},
fail(e) {
reject(e);
},
complete() {
clearTimeout(_time)
wx.hideLoading()
}
});
});
}
module.exports = request
登录态封装【token.js】:
/*
* token名称
*/
let token = "my_token";
/*
* 设置token
*/
const setToken = (user) => {
wx.setStorage({
key: token,
data: user
})
}
/*
* 获取token
*/
const getToken = () => {
return wx.getStorageSync(token)
}
/*
* 删除token
*/
const removeToken = () => {
wx.removeStorageSync(token)
}
/*
* 是否登录
*/
const isLogin = () => {
try {
var value = getToken()
if (value && value.token) {
return true;
}
return false;
} catch (e) {
return false;
}
}
module.exports = {
setToken: setToken,
getToken: getToken,
removeToken: removeToken,
isLogin: isLogin
}
下载封装【download.js】:
const access = require('./token.js');
const system = require('./system.js');
const request = (url, filename) => {
return new Promise((resolve, reject) => {
let _time = setTimeout(() => {
wx.showLoading({
mask: true,
title: '下载中'
});
}, 800);
let _access = access.getToken();
let _system = system.getToken();
wx.downloadFile({
url: system.host() + url,
filePath: wx.env.USER_DATA_PATH + '/' + filename,
header: {
'content-type': 'application/json; charset=utf-8',
"accessToken": _access ? _access.token : "",
"platformAppId": _system ? _system.platformAppId : "",
"matrixId": _system ? _system.matrixId : "",
},
success: res => {
if (res.statusCode === 200) {
resolve(res.filePath)
return;
}
reject();
},
fail: () => {
reject();
},
complete: () => {
clearTimeout(_time)
wx.hideLoading()
}
})
})
}
module.exports = request
上传封装【upload.js】:
const access = require('./token.js');
const system = require('./system.js');
const request = (url, path) => {
return new Promise((resolve, reject) => {
let _time = setTimeout(() => {
wx.showLoading({
mask: true,
title: '上传中'
});
}, 800);
let _access = access.getToken();
let _system = system.getToken();
wx.uploadFile({
url: system.host() + url,
filePath: path,
name: 'file',
formData: { objectId: "3", serviceName: 'uniapp' },
header: {
'content-type': 'application/json; charset=utf-8',
"accessToken": _access ? _access.token : "",
"platformAppId": _system ? _system.platformAppId : "",
"matrixId": _system ? _system.matrixId : "",
},
success: res => {
let _data = JSON.parse(res.data);
if (_data.success) {
resolve(_data.data);
return;
}
wx.showToast({
title: _data.message,
icon: 'none',
});
reject();
},
fail: () => {
reject();
},
complete: () => {
clearTimeout(_time)
wx.hideLoading()
}
})
})
}
module.exports = request