axios封装进阶——》1

import axios from 'axios'
import store from './store'
import router from './router'
import Qs from 'qs'
import { Loading, Message } from 'element-ui'

// axios.defaults.baseURL=process.env.BASE_URL
// axios.defaults.timeout=30*1000

let loadingInstace, needloadingRequestCount = 0
axios.interceptors.request.use(config => {
needloadingRequestCount ++
if (!config.hideLoading) {
// loadingInstace = Loading.service({
// lock: true,
// text: '正在加载中...',
// spinner: 'el-icon-loading',
// background: 'rgba(0, 0, 0, 0.7)'
// })
}
if (store.getters.getToken!'null') {
config.headers['xa_token'] = store.getters.getToken
}
const method = config.method.toUpperCase();
if (method
='POST' || method='PUT') {
if (config.format && config.format === 'json') {
config.headers['Content-Type'] = 'application/json'
} else if (config.format && config.format === 'multipart') {
config.headers['Content-Type'] = 'multipart/form-data'
} else {
config.data = Qs.stringify(config.data)
}
}
if (process.env.NODE_ENV
='development') {
// console.log(%c[${config.method}]请求:${config.url}, 'color:DodgerBlue', config)
}
return config
}, error => {
Message.error({
message: '加载超时'
})
return Promise.reject(error)
})

axios.interceptors.response.use(response => {
try {
needloadingRequestCount --
if (process.env.NODE_ENV='development') {
// console.log(%c响应:${response.config.url}, 'color:YellowGreen', response.data)
}
if (needloadingRequestCount<=0 && !response.config.hideLoading) {
// loadingInstace.close()
}
// TODO 响应错误处理
if (response.data.code) {
if (response.data.code
=0) {
return response.data
} else {
Message.error({
message: response.data.message
})
if (response.data.code===1001) {
router.replace({
name: 'login',
query: { redirect: window.location.hash.substr(1) }
})
}
return Promise.reject(response.data)
}
}
return response.data
} catch (error) {
throw new Error('不好意思,程序好像出问题了!')
}
}, error => {
needloadingRequestCount --
if (needloadingRequestCount<=0) {
// loadingInstace.close()
Message.error({
message: '加载失败'
})
return Promise.reject(error)
}
})
export default axios
image
image

posted @   举个栗子走天下  阅读(35)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示