174 lines
4.0 KiB
JavaScript
174 lines
4.0 KiB
JavaScript
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
|
|
}
|