congming_huose-apk/common/http.interceptor.js

174 lines
4.0 KiB
JavaScript
Raw Normal View History

2025-11-08 11:30:06 +08:00
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
}