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 };