国外MOSE官网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

98 lines
2.3 KiB

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