// 引入状态码statusCode
|
const statusCode = require('./statusCode')
|
// 定义请求路径, BASEURL: 普通请求API; CBASEURL: 中台API,不使用中台可不引入CBASEURL
|
const {
|
BASEURL
|
} = require('./config')
|
// 定义默认参数
|
const defaultOptions = {
|
data: {},
|
ignoreToken: false,
|
form: false,
|
}
|
/**
|
* 发送请求
|
* @params
|
* method: <String> 请求方式: POST/GET
|
* url: <String> 请求路径
|
* data: <Object> 请求参数
|
* ignoreToken: <Boolean> 是否忽略token验证
|
* form: <Boolean> 是否使用formData请求
|
*/
|
function request(options) {
|
// let _options = Object.assign(defaultOptions, options)
|
let _options = {
|
...defaultOptions,
|
...options
|
}
|
let {
|
method,
|
url,
|
data,
|
ignoreToken,
|
form,
|
isShowLoding
|
} = _options
|
const app = getApp()
|
// 设置请求头
|
let header = {}
|
if (form) {
|
header = {
|
'content-type': 'application/x-www-form-urlencoded'
|
}
|
} else {
|
header = {
|
'content-type': 'application/json' //自定义请求头信息
|
}
|
}
|
if (!ignoreToken) {
|
// 从全局变量中获取token
|
let token = app.globalData.token
|
header.Authorization = `Bearer ${token}`
|
}
|
return new Promise((resolve, reject) => {
|
console.log("url:" + BASEURL + url);
|
if (isShowLoding) {
|
wx.showLoading({
|
title: '通信中...', // 加载动画标题
|
mask: true, // 是否显示透明蒙层,防止触摸穿透
|
});
|
}
|
let myUrl;
|
if (url.startsWith('http')) {
|
myUrl = url;
|
} else {
|
myUrl = BASEURL + url;
|
}
|
wx.request({
|
url: myUrl,
|
data,
|
header,
|
method,
|
success: (res) => {
|
let {
|
statusCode: code
|
} = res
|
console.log("success statusCode:" + code);
|
if (isShowLoding) {
|
wx.hideLoading(); // 隐藏加载动画
|
}
|
if (code === statusCode.SUCCESS) {
|
if (res.data.code !== "0001") {
|
// 统一处理请求错误
|
showToast(res.data.errorMsg)
|
reject(res.data)
|
return
|
}
|
resolve(res.data)
|
} else if (code === statusCode.EXPIRE) {
|
app.globalData.token = ''
|
showToast(`登录过期, 请重新刷新页面`)
|
reject(res.data)
|
} else {
|
// showToast(`请求错误${url}, CODE: ${code}`)
|
console.log("success 请求错误:" + code);
|
reject(res.data)
|
}
|
console.log("success statusCode:1111111111");
|
},
|
fail: (err) => {
|
console.log("Error " + err);
|
if (isShowLoding) {
|
wx.hideLoading(); // 隐藏加载动画
|
}
|
|
showToast(err.errMsg)
|
reject(err)
|
}
|
})
|
})
|
}
|
|
// 封装toast函数
|
function showToast(title, icon = 'none', duration = 2500, mask = false) {
|
wx.showToast({
|
title: title || '',
|
icon,
|
duration,
|
mask
|
});
|
}
|
|
function get(options) {
|
return request({
|
method: 'GET',
|
...options
|
})
|
}
|
|
function post(options) {
|
// url, data = {}, ignoreToken, form
|
return request({
|
method: 'POST',
|
...options
|
})
|
}
|
|
module.exports = {
|
request,
|
get,
|
post
|
}
|