112 lines
3.9 KiB
JavaScript
112 lines
3.9 KiB
JavaScript
import Request from './luch-request/index.js';
|
|
// 基础的url
|
|
|
|
|
|
// const baseUrl = 'https://xyb.hexieweb.cn/xyb100zz';
|
|
const baseUrl = 'http://192.168.1.168:5004';
|
|
|
|
const http = new Request({
|
|
baseURL: baseUrl,
|
|
timeout: 10000,
|
|
header: {
|
|
// 'content-type': 'application/json',
|
|
'Authorization': "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImxvZ2luX3VzZXJfa2V5IjoiNzQ5NGU2MzAtNTRlYS00ZTM5LWIxYjUtNzc2MzY5NTRhYmJmIn0.7l5CMwFitlpXniZ6PTR5DqN8ASFTFZ1DCUZKjOtr5CpuXWiPHeSW19nY8XKfGdxMvB7j-OnXuSznLRjx-N7K9g"
|
|
}
|
|
})
|
|
|
|
// 固定的 token
|
|
const AUTH_TOKEN = "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImxvZ2luX3VzZXJfa2V5IjoiNTQyMjJlODYtZDUyNS00ZTA0LWI3Y2QtMGU1ZWYzYmIwM2EwIn0.x8zPXafDGVjIDIcAdWsWT3F2fU20QHVLFR15b251LfwpfRt_UaDo1-bvHEyi8hxqVkiStOqi09TTUTPBgjPYkw";
|
|
// 请求之前查看是否为空
|
|
const isEmptyObject = (obj) => {
|
|
return Object.keys(obj).length === 0;
|
|
};
|
|
|
|
// 将对象转换为查询字符串
|
|
const objectToQueryString = (obj) => {
|
|
const keyValuePairs = [];
|
|
for (let key in obj) {
|
|
if (obj.hasOwnProperty(key)) {
|
|
keyValuePairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]));
|
|
}
|
|
}
|
|
return keyValuePairs.join('&');
|
|
};
|
|
|
|
// 提示
|
|
function showToast(title) {
|
|
uni.showToast({
|
|
title,
|
|
icon: 'none',
|
|
duration: 1000,
|
|
});
|
|
}
|
|
|
|
// 请求
|
|
const requestAPI = (config) => {
|
|
// 支持对象参数或传统参数
|
|
let { url, method = 'GET', data = {} } = typeof config === 'object' && config.url ? config : { url: config, method: arguments[1] || 'GET', data: arguments[2] || {} };
|
|
|
|
if (method == 'GET' && !isEmptyObject(data)) {
|
|
url += '?' + objectToQueryString(data);
|
|
}
|
|
// 显示加载状态
|
|
uni.showLoading({
|
|
title: '加载中...'
|
|
});
|
|
return new Promise((resolve, reject) => {
|
|
uni.request({
|
|
url: baseUrl + url,
|
|
method,
|
|
data,
|
|
header: {
|
|
'Authorization': AUTH_TOKEN
|
|
},
|
|
success: (res) => {
|
|
uni.hideLoading();
|
|
|
|
// 检查HTTP状态码
|
|
if (res.statusCode !== 200) {
|
|
console.error('HTTP错误:', res.statusCode);
|
|
// showToast(`请求失败 ${res.statusCode}`);
|
|
reject(`HTTP_${res.statusCode}`);
|
|
return;
|
|
}
|
|
|
|
// 检查业务状态码(如果后端有的话)
|
|
if (res.data && res.data.code !== undefined) {
|
|
// 支持 code === 200 或 code === 0 作为成功状态
|
|
if (res.data.code === 200 || res.data.code === 0) {
|
|
resolve(res.data);
|
|
} else if (res.data.code === 401) {
|
|
// token过期处理
|
|
uni.removeStorageSync('_user_token_');
|
|
showToast('登录已过期,请重新登录');
|
|
reject('401');
|
|
} else {
|
|
showToast(res.data.msg || '请求失败');
|
|
reject(res.data.code);
|
|
}
|
|
} else {
|
|
// 没有业务状态码,直接返回数据
|
|
resolve(res.data);
|
|
}
|
|
},
|
|
fail: (err) => {
|
|
console.error('网络请求失败:', err);
|
|
uni.hideLoading();
|
|
// 区分不同的错误类型
|
|
if (err.errMsg && err.errMsg.includes('request:fail')) {
|
|
showToast('网络连接失败,请检查网络设置');
|
|
} else if (err.errMsg && err.errMsg.includes('timeout')) {
|
|
showToast('请求超时,请稍后重试');
|
|
} else {
|
|
showToast('网络异常,请稍后重试');
|
|
}
|
|
reject(err);
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
// 文件末尾应该导出
|
|
export { requestAPI,baseUrl,AUTH_TOKEN }; |