import config from "@/config";
|
|
|
|
export default function request ( {
|
|
url = '',
|
|
method = 'GET',
|
|
data = {},
|
|
showLoading = false,
|
|
header = {}
|
|
} ) {
|
|
// console.log('我是request的参数', url, method, data, showLoading, header);
|
|
|
|
if (showLoading) uni.showLoading({title: '加载中'})
|
|
const token = uni.getStorageSync('token')
|
|
if (token) {
|
|
header['X-Access-Token'] = token
|
|
}
|
|
return new Promise((resolve, reject) => {
|
|
uni.request({
|
|
url: config.baseURL + url,
|
|
method,
|
|
data,
|
|
header: {
|
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
...header
|
|
},
|
|
success: (res) => {
|
|
console.log(`Success ${method} ${url}`, res);
|
|
|
|
// 处理HTTP状态码错误
|
|
if (res.statusCode !== 200){
|
|
const error = {
|
|
code: res.statusCode,
|
|
message: '网络请求错误'
|
|
}
|
|
|
|
switch (res.statusCode) {
|
|
case 401:
|
|
case 403:
|
|
uni.removeStorageSync('token')
|
|
uni.reLaunch({ url: '/subPages/login/login' })
|
|
error.message = '登录已过期,请重新登录'
|
|
break;
|
|
case 404:
|
|
error.message = '资源不存在'
|
|
break;
|
|
case 500:
|
|
error.message = '服务器错误'
|
|
}
|
|
|
|
uni.showToast({
|
|
title: error.message,
|
|
icon: 'none'
|
|
})
|
|
|
|
reject(error)
|
|
return
|
|
}
|
|
|
|
if (res.data.code === 200 && res.data.result !== null) {
|
|
resolve(res.data) // 成功返回数据
|
|
} else {
|
|
const errorMsg = res.data.message || '请求失败'
|
|
|
|
uni.showToast({
|
|
title: errorMsg,
|
|
icon: 'none'
|
|
})
|
|
|
|
reject({
|
|
code: res.data.code,
|
|
message: errorMsg,
|
|
data: res.data
|
|
})
|
|
}
|
|
},
|
|
fail: (err) => {
|
|
console.log(`Fail ${method} ${url}`, err);
|
|
const errorMsg = err.errMsg || '请求失败'
|
|
|
|
uni.showToast({
|
|
title: errorMsg,
|
|
icon: 'none'
|
|
})
|
|
|
|
reject({
|
|
code: -1,
|
|
message: errorMsg,
|
|
data: err
|
|
})
|
|
},
|
|
complete: () => {
|
|
if (showLoading) {
|
|
uni.hideLoading()
|
|
}
|
|
}
|
|
})
|
|
})
|
|
}
|