flat: 添加替换字符串

This commit is contained in:
Apcallover
2024-04-18 16:58:58 +08:00
parent da802c31e8
commit 0d9d1a83f6
4 changed files with 68 additions and 39 deletions

View File

@@ -1,2 +1,3 @@
VUE_APP_SITE='default' VUE_APP_SITE='default'
VUE_APP_LOGIN_ERROR = 'http://10.160.7.216:9920/casserver/login' VUE_APP_LOGIN_ERROR = http://10.160.7.216:9920/casserver/login
VUE_APP_REPLACE_STR = {"{oss_file_url}": "https://dy12333.org.cn/api"}

View File

@@ -1,2 +1,3 @@
VUE_APP_SITE='default' VUE_APP_SITE='default'
VUE_APP_LOGIN_ERROR = 'http://10.160.7.216:9920/casserver/login' VUE_APP_LOGIN_ERROR = http://10.160.7.216:9920/casserver/login
VUE_APP_REPLACE_STR = {"{oss_file_url}": "https://dy12333.org.cn/api"}

View File

@@ -17,10 +17,11 @@ import {Message} from 'element-ui';
import {Base64} from 'js-base64'; import {Base64} from 'js-base64';
import NProgress from 'nprogress'; import NProgress from 'nprogress';
const replaceStr = JSON.parse(process.env.VUE_APP_REPLACE_STR)
//默认超时时间 //默认超时时间
axios.defaults.timeout = 60000; axios.defaults.timeout = 60000;
//返回其他状态码 //返回其他状态码
axios.defaults.validateStatus = function(status) { axios.defaults.validateStatus = function (status) {
return status >= 200 && status <= 500; return status >= 200 && status <= 500;
}; };
//跨域请求允许保存cookie //跨域请求允许保存cookie
@@ -34,7 +35,7 @@ axios.interceptors.request.use(config => {
const meta = (config.meta || {}); const meta = (config.meta || {});
const isToken = meta.isToken === false; const isToken = meta.isToken === false;
config.headers['Authorization'] = config.headers['Authorization'] =
`Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`; `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`;
if (getToken() && !isToken) { if (getToken() && !isToken) {
//让每个请求携带token--['Authorization']为自定义key 请根据实际情况自行修改 //让每个请求携带token--['Authorization']为自定义key 请根据实际情况自行修改
config.headers['Jobslink-Auth'] = 'bearer ' + getToken() config.headers['Jobslink-Auth'] = 'bearer ' + getToken()
@@ -44,42 +45,68 @@ axios.interceptors.request.use(config => {
config.data = serialize(config.data); config.data = serialize(config.data);
} }
return config return config
}, error => {return Promise.reject(error)}); }, error => {
return Promise.reject(error)
});
// http response 拦截 // http response 拦截
axios.interceptors.response.use( axios.interceptors.response.use(
res => { res => {
//关闭 progress bar //关闭 progress bar
NProgress.done(); NProgress.done();
//获取状态码 //获取状态码
const status = res.data.code || res.status; const status = res.data.code || res.status;
const statusWhiteList = website.statusWhiteList || []; const statusWhiteList = website.statusWhiteList || [];
const message = res.data.msg || res.data.error_description || '未知错误'; const message = res.data.msg || res.data.error_description || '未知错误';
//如果在白名单里则自行catch逻辑处理 //如果在白名单里则自行catch逻辑处理
if (statusWhiteList.includes(status)) return Promise.reject(res); if (statusWhiteList.includes(status)) return Promise.reject(res);
//如果是401则跳转到登录页面 //如果是401则跳转到登录页面
if (status === 401) if (status === 401)
store.dispatch('FedLogOut').then(() => router.push({path: '/login'})); store.dispatch('FedLogOut').then(() => router.push({path: '/login'}));
// 如果请求为500统一处理 // 如果请求为500统一处理
const err = new Error(message) const err = new Error(message)
err.response = res err.response = res
err.status = status err.status = status
if (message.length > 100) { if (message.length > 100) {
Message({message: '系统繁忙', type: 'error'}); Message({message: '系统繁忙', type: 'error'});
return Promise.reject(err) return Promise.reject(err)
}
// 如果请求为非200否者默认统一处理
if (status !== 200) {
Message({message: message, type: 'error'});
return Promise.reject(err, res)
}
return transformReplaceStr(res);
},
error => {
NProgress.done();
if (error.message.includes('timeout')) {
Message({message: '请求超时', type: 'error'});
}
return Promise.reject(new Error(error), error);
});
// 递归替换 url
function transformReplaceStr(props) {
if (typeof props !== 'object' || props === null) {
for (const key in replaceStr) {
if (typeof props === 'string') {
props = props.replace(key, replaceStr[key]);
} }
// 如果请求为非200否者默认统一处理 }
if (status !== 200) { return props;
Message({message: message, type: 'error'}); }
return Promise.reject(err, res) let result;
} if (props instanceof Array) {
return res; result = [];
}, } else {
error => { result = {};
NProgress.done(); }
if (error.message.includes('timeout')) { for (let key in props) {
Message({message: '请求超时', type: 'error'}); if (props.hasOwnProperty(key)) {
} result[key] = transformReplaceStr(props[key]);
return Promise.reject(new Error(error), error); }
}); }
return result;
}
export default axios; export default axios;

View File

@@ -23,7 +23,7 @@ module.exports = {
port: 1888, port: 1888,
proxy: { proxy: {
"/api": { "/api": {
target: 'http://10.165.0.173 :8000', target: 'http://192.168.1.108:8000',
ws: true, ws: true,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {