const install = (Vue, vm) => { // 为 Vue 原型添加自定义的请求方法 // const http = 'http://192.168.1.7:4601' const http = 'http://115.239.213.199/prod-api' Vue.prototype.$http = { // GET 请求 get(url, data = {}) { return new Promise((resolve, reject) => { const token = uni.getStorageSync('token') uni.request({ url: this.buildUrlWithLang(http,url), method: 'GET', data: data, header: { 'content-type': 'application/json;charset=UTF-8', 'Authorization': token || '' }, success: (res) => { // 处理响应 if (res.statusCode === 401) { // token 失效,重新登录 uni.login({ success: function(ret) { console.log("重新登录", ret) } }) reject(res) } else { resolve(res.data) } }, fail: (err) => { console.log('请求失败:', err) reject(err) } }) }) }, buildUrlWithLang(baseUrl, endpoint, lang = null) { // 获取语言参数 if (!lang) { const storedLang = uni.getStorageSync('language') || 'zh'; switch(storedLang) { case 'ru': lang = 'ru'; break; case 'en': lang = 'en_US'; break; case 'ja': lang = 'ja_JP'; break; case 'zh': default: lang = 'zh_CN'; break; } } // 构建完整URL let fullUrl = baseUrl + endpoint; // 处理语言参数拼接 const separator = endpoint.includes('?') ? '&' : '?'; fullUrl += separator + 'lang=' + encodeURIComponent(lang); return fullUrl; }, // POST 请求 post(url, data = {}) { return new Promise((resolve, reject) => { const token = uni.getStorageSync('token'); uni.request({ url:this.buildUrlWithLang(http,url), method: 'POST', data: data, header: { 'content-type': 'application/json;charset=UTF-8', 'Authorization': token || '' }, success: (res) => { // 处理响应 if (res.statusCode === 401) { // token 失效,重新登录 uni.login({ success: function(ret) { console.log("重新登录", ret); } }); reject(res); } else { resolve(res.data); } }, fail: (err) => { console.log('请求失败:', err); reject(err); } }); }); }, // PUT 请求 put(url, data = {}) { return new Promise((resolve, reject) => { const token = uni.getStorageSync('token'); uni.request({ url:this.buildUrlWithLang(http,url), method: 'PUT', data: data, header: { 'content-type': 'application/json;charset=UTF-8', 'Authorization': token || '' }, success: (res) => { // 处理响应 if (res.statusCode === 401) { // token 失效,重新登录 uni.login({ success: function(ret) { console.log("重新登录", ret); } }); reject(res); } else { resolve(res.data); } }, fail: (err) => { console.log('请求失败:', err); reject(err); } }); }); }, // DELETE 请求 delete(url, data = {}) { return new Promise((resolve, reject) => { const token = uni.getStorageSync('token'); uni.request({ url:this.buildUrlWithLang(http,url), method: 'DELETE', data: data, header: { 'content-type': 'application/json;charset=UTF-8', 'Authorization': token || '' }, success: (res) => { // 处理响应 if (res.statusCode === 401) { // token 失效,重新登录 uni.login({ success: function(ret) { console.log("重新登录", ret); } }); reject(res); } else { resolve(res.data); } }, fail: (err) => { console.log('请求失败:', err); reject(err); } }); }); } }; } export default { install }