Files
uni-fans-score/config/http.js
T

85 lines
2.0 KiB
JavaScript

import {
URL,
appid
} from './url'
const request = (option) => {
return new Promise((resolve, reject) => {
// 默认不显示加载中提示
if (!option.hideLoading) {
uni.showLoading({
title: option.loadingText || '加载中...',
mask: true
})
}
uni.request({
url: URL + option.url,
method: option.method,
data: option.data,
header: {
"Content-Type": "application/x-www-form-urlencoded",
...option.headers,
'appid': appid,
'Authorization': "Bearer " + uni.getStorageSync('token'),
'Clientid': uni.getStorageSync('client_id')
},
success(res) {
// 检查响应状态码
if (res.statusCode !== 200) {
console.error(`HTTP状态码错误: ${res.statusCode}`, res.data)
// 为了适应某些服务器的异常响应,我们仍然返回数据
if (res.data) {
resolve(res.data)
return
}
reject({msg: `请求失败,状态码:${res.statusCode}`})
return
}
// 检查业务状态码
if (res.data && res.data.code !== 200) {
console.warn(`业务状态码错误: ${res.data.code}`, res.data)
// 判断是否需要忽略数据为空的错误
if (option.ignoreEmptyError &&
(res.data.code === 500 && res.data.msg &&
(res.data.msg.includes('未找到') || res.data.msg.includes('不存在')))) {
// 对于指定需要忽略的错误,返回一个标准的"成功但数据为空"的响应
resolve({
code: 200,
msg: "操作成功",
data: []
})
return
}
// 仍然返回数据,由业务逻辑处理
resolve(res.data)
return
}
resolve(res.data)
},
fail(err) {
// 网络请求本身失败
console.error(`请求失败: ${option.url}`, err)
reject(err)
},
complete() {
// 隐藏加载提示
if (!option.hideLoading) {
uni.hideLoading()
}
}
})
})
}
export default request