const host = '/api/wx'
// 定义错误码
const errorCode = {
400: '参数错误',
401: '登录过期',
403: '没有权限',
404: '接口未找到',
405: '请求方式不允许',
500: '服务器错误',
502: '网关错误',
503: '服务不可用'
}
// 响应处理
function responseHandle(res, resolve, reject) {
if (res.statusCode >= 200 && res.statusCode < 300) {
if (res.data.code !== 200) {
uni.showToast({
title: res.data.msg,
icon: 'none'
})
reject(res.data)
} else {
resolve(res.data.data)
}
} else {
if (res.statusCode === 401) {
uni.hideLoading()
const token = uni.removeStorageSync('token')
uni.showModal({
title: "登录过期",
content: res.data.message,
confirmText: "前往登录",
cancelText: '回到首页',
success(res) {
if (res.confirm) {
uni.reLaunch({
url: '/pages/login/login'
})
} else {
uni.reLaunch({
url: '/pages/index/index'
})
}
}
})
uni.showToast({
title: res.data.message,
icon: "error"
})
reject(res.data)
} else {
uni.hideLoading()
uni.showToast({
title: errorCode[res.statusCode],
icon: 'error'
})
reject(res.data)
}
}
}
// 错误处理
function errorHandle(err, reject) {
uni.showToast({
title: '连接服务器失败',
icon: 'error'
})
reject(err)
}
/**
* 请求premise
* @param {请求方式} method
* @param {接口地址} url
* @param {请求参数} data
*/
function http({
method = 'get',
url = '',
data = {},
type = 'json'
} = {}) {
const oid = uni.getStorageSync('oid')
if (oid && data && !data.oid) {
data.oid = oid
}
const contentType = type === 'json' ? 'application/json' : 'application/x-www-form-urlencoded'
const token = uni.getStorageSync('token')
// 设置请求体类型
const header = {
'content-type': contentType
}
// 添加token
if (token) {
header.Authorization = token
}
return new Promise((resolve, reject) => {
uni.showLoading({
title: '处理中',
mask: true
})
uni.request({
url: host + url,
header,
method,
data,
success(res) {
uni.hideLoading()
setTimeout(() => {
responseHandle(res, resolve, reject)
}, 200);
},
fail(err) {
uni.hideLoading()
setTimeout(() => {
errorHandle(err, reject)
}, 200);
}
})
})
}
export default http
uni-app封装网络请求
发布于 12 天前 前端 最后更新于 12 天前
Comments NOTHING