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/json", ...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