在前端开发中,如果我们的生产源有多个,我们一般可以采用不同的打包方式去切换不同的生产源,但是如果我们只打包一次,并且我们需要应如下情况:主生产源崩溃了或者无法使用,并且暂时没有人紧急维护的时候,这时候还想让项目正常运行,就需要自动切换使用我们的备用生产源,先让备用服务器顶着,然后等我们维护好再上
import axios from 'axios'
import router from '@/router'
let request = axios.create({
baseURL: import.meta.env.VITE_BASE_URL, //API接口地址默认前缀
timeout: 8000,
count:0
})
// 请求拦截器
request.interceptors.request.use(
function (config) {
// 往请求头里统一添加数据
config.headers.sourceId = '请求头'
return config
},
function (error) {
console.log(error, '错误')
return Promise.reject(error)
}
)
function tautology({ method, url, data }) {
console.log(request.count,'次数');
return new Promise((resolve, reject) => {
request[method](url, JSON.parse(data))
.then((res) => {
return resolve(res)}
)
.catch((err) => reject(err))
})
}
var dressList = ['备用源1','备用源2']
let idx=-1
request.interceptors.response.use(
(res) => {
return res
},
(err) => {
if (err.code == 'ERR_NETWORK') {
if(idx<dressList.length-1) {
idx++
}
request.defaults.baseURL = dressList[idx]
const { method, url, data } = err.config
return tautology({ method, url, data })
}
}
)
export default request