From 0d9d1a83f68eea3453a4cbabaaf9db20ac3b4fb5 Mon Sep 17 00:00:00 2001 From: Apcallover <1503963513@qq.com> Date: Thu, 18 Apr 2024 16:58:58 +0800 Subject: [PATCH] =?UTF-8?q?flat:=20=E6=B7=BB=E5=8A=A0=E6=9B=BF=E6=8D=A2?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 3 +- .env.production | 3 +- src/router/axios.js | 99 ++++++++++++++++++++++++++++----------------- vue.config.js | 2 +- 4 files changed, 68 insertions(+), 39 deletions(-) diff --git a/.env.development b/.env.development index 22e832f..a2b175b 100644 --- a/.env.development +++ b/.env.development @@ -1,2 +1,3 @@ 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"} diff --git a/.env.production b/.env.production index 22e832f..a2b175b 100644 --- a/.env.production +++ b/.env.production @@ -1,2 +1,3 @@ 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"} diff --git a/src/router/axios.js b/src/router/axios.js index b4d5729..3cf69ab 100644 --- a/src/router/axios.js +++ b/src/router/axios.js @@ -17,10 +17,11 @@ import {Message} from 'element-ui'; import {Base64} from 'js-base64'; import NProgress from 'nprogress'; +const replaceStr = JSON.parse(process.env.VUE_APP_REPLACE_STR) //默认超时时间 axios.defaults.timeout = 60000; //返回其他状态码 -axios.defaults.validateStatus = function(status) { +axios.defaults.validateStatus = function (status) { return status >= 200 && status <= 500; }; //跨域请求,允许保存cookie @@ -34,7 +35,7 @@ axios.interceptors.request.use(config => { const meta = (config.meta || {}); const isToken = meta.isToken === false; config.headers['Authorization'] = - `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`; + `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`; if (getToken() && !isToken) { //让每个请求携带token--['Authorization']为自定义key 请根据实际情况自行修改 config.headers['Jobslink-Auth'] = 'bearer ' + getToken() @@ -44,42 +45,68 @@ axios.interceptors.request.use(config => { config.data = serialize(config.data); } return config -}, error => {return Promise.reject(error)}); +}, error => { + return Promise.reject(error) +}); // http response 拦截 axios.interceptors.response.use( - res => { - //关闭 progress bar - NProgress.done(); - //获取状态码 - const status = res.data.code || res.status; - const statusWhiteList = website.statusWhiteList || []; - const message = res.data.msg || res.data.error_description || '未知错误'; - //如果在白名单里则自行catch逻辑处理 - if (statusWhiteList.includes(status)) return Promise.reject(res); - //如果是401则跳转到登录页面 - if (status === 401) - store.dispatch('FedLogOut').then(() => router.push({path: '/login'})); - // 如果请求为500统一处理 - const err = new Error(message) - err.response = res - err.status = status - if (message.length > 100) { - Message({message: '系统繁忙', type: 'error'}); - return Promise.reject(err) + res => { + //关闭 progress bar + NProgress.done(); + //获取状态码 + const status = res.data.code || res.status; + const statusWhiteList = website.statusWhiteList || []; + const message = res.data.msg || res.data.error_description || '未知错误'; + //如果在白名单里则自行catch逻辑处理 + if (statusWhiteList.includes(status)) return Promise.reject(res); + //如果是401则跳转到登录页面 + if (status === 401) + store.dispatch('FedLogOut').then(() => router.push({path: '/login'})); + // 如果请求为500统一处理 + const err = new Error(message) + err.response = res + err.status = status + if (message.length > 100) { + Message({message: '系统繁忙', type: 'error'}); + 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) { - Message({message: message, type: 'error'}); - return Promise.reject(err, res) - } - return res; - }, - error => { - NProgress.done(); - if (error.message.includes('timeout')) { - Message({message: '请求超时', type: 'error'}); - } - return Promise.reject(new Error(error), error); - }); + } + return props; + } + let result; + if (props instanceof Array) { + result = []; + } else { + result = {}; + } + for (let key in props) { + if (props.hasOwnProperty(key)) { + result[key] = transformReplaceStr(props[key]); + } + } + return result; +} export default axios; diff --git a/vue.config.js b/vue.config.js index 9cbe3a7..29b9062 100644 --- a/vue.config.js +++ b/vue.config.js @@ -23,7 +23,7 @@ module.exports = { port: 1888, proxy: { "/api": { - target: 'http://10.165.0.173 :8000', + target: 'http://192.168.1.108:8000', ws: true, changeOrigin: true, pathRewrite: {