// HTTP请求封装 const BASE_URL = process.env.NODE_ENV === 'development' ? 'http://localhost:8080/api' : 'https://your-api-domain.com/api' // 获取token function getToken() { return uni.getStorageSync('token') || '' } // 请求拦截器 function request(options) { return new Promise((resolve, reject) => { // 显示加载提示 if (options.loading !== false) { uni.showLoading({ title: '加载中...', mask: true }) } uni.request({ url: BASE_URL + options.url, method: options.method || 'GET', data: options.data || {}, header: { 'Content-Type': options.contentType || 'application/json', 'Authorization': 'Bearer ' + getToken(), ...options.header }, success: (res) => { uni.hideLoading() if (res.statusCode === 200) { if (res.data.code === 200 || res.data.code === undefined) { resolve(res.data) } else { // 业务错误 if (res.data.code === 401) { // token过期,跳转到登录页 uni.removeStorageSync('token') uni.removeStorageSync('userInfo') uni.reLaunch({ url: '/pages/login/login' }) } uni.showToast({ title: res.data.message || '请求失败', icon: 'none' }) reject(res.data) } } else if (res.statusCode === 401) { // 未授权,跳转到登录页 uni.removeStorageSync('token') uni.removeStorageSync('userInfo') uni.reLaunch({ url: '/pages/login/login' }) reject(res) } else { uni.showToast({ title: '请求失败', icon: 'none' }) reject(res) } }, fail: (err) => { uni.hideLoading() uni.showToast({ title: '网络错误', icon: 'none' }) reject(err) } }) }) } // GET请求 export function get(url, data, options = {}) { return request({ url, method: 'GET', data, ...options }) } // POST请求 export function post(url, data, options = {}) { return request({ url, method: 'POST', data, ...options }) } // PUT请求 export function put(url, data, options = {}) { return request({ url, method: 'PUT', data, ...options }) } // DELETE请求 export function del(url, data, options = {}) { return request({ url, method: 'DELETE', data, ...options }) } // 文件上传 export function upload(url, filePath, options = {}) { return new Promise((resolve, reject) => { uni.showLoading({ title: '上传中...', mask: true }) uni.uploadFile({ url: BASE_URL + url, filePath: filePath, name: 'file', header: { 'Authorization': 'Bearer ' + getToken() }, formData: options.formData || {}, success: (res) => { uni.hideLoading() try { const data = JSON.parse(res.data) if (res.statusCode === 200) { resolve(data) } else { uni.showToast({ title: data.message || '上传失败', icon: 'none' }) reject(data) } } catch (e) { uni.showToast({ title: '上传失败', icon: 'none' }) reject(e) } }, fail: (err) => { uni.hideLoading() uni.showToast({ title: '上传失败', icon: 'none' }) reject(err) } }) }) } export default { get, post, put, delete: del, upload }