axios全局拦截器处理headers的content-type不同

 一 headers['content-type'] === 'multipart/form-data;charset=utf-8 和 headers['content-type'] === 'application/json;charset=utf-8处理

// // http response 拦截器
axios.interceptors.response.use(
	response => {
		const headers = response.headers;
		if(headers != null && headers['content-type'] === 'multipart/form-data;charset=utf-8') {
			return response.data
		}                                        
		if (headers != null && headers['content-type'] === 'application/json;charset=utf-8') {
			if (!response.data.appData.success) {
                if (response.data.appData.errCode == 1001 || response.data.appData.errCode == 1002) {
                    sessionStorage.clear();
                    setTimeout(() => window.location.href = '#/login',2000)
				}
				Vue.prototype.$Message.error(response.data.appData.tipMsg || response.data.appData.errMsg);
				// return Promise.reject(response)
			}
		}
		return Promise.resolve(response)
	},
	error => {
		if (error && error.response) {
			switch (error.response.status) {
				case 400:
					error.message = '错误请求'
					break
				case 401:
					error.message = '未授权,请重新登录'
					sessionStorage.clear();
					Vue.prototype.$Message.error("凭证失效,请重新登录");
					setTimeout(() => window.location.href = '#/login', 2000);
					break
				case 403:
					error.message = '用户名或密码错误'
					break
				case 404:
					error.message = '请求错误,未找到该资源'
					break
				case 405:
					error.message = '请求方法未允许'
					break
				case 408:
					error.message = '请求超时'
					break
				case 500:
					error.message = '服务器端出错'
					break
				case 501:
					error.message = '网络未实现'
					break
				case 502:
					error.message = '网络错误'
					break
				case 503:
					error.message = '服务不可用'
					break
				case 504:
					error.message = '网络超时'
					break
				case 505:
					error.message = 'http版本不支持该请求'
					break
				default:
					error.message = `连接错误${error.response.status}`
			}
		}
		// let errData = {
		// 	code: error.response.status,
		// 	message: error.message
		// }
		// // 统一错误处理可以放这,例如页面提示错误...
		// Vue.prototype.$Message.error(errData.message);
		return Promise.reject(error)
	})

 

 

// // http request 拦截器
axios.interceptors.request.use(
	config => {
		config.headers['Authorization'] = sessionStorage.authorization;
		return config;
	},
	error => {
		return Promise.reject(error)
	})

后台接口导出

                    let name ='运控分析报表'; 
                    //无拦截 
                    let url = window.URL.createObjectURL(new Blob([res.data]));
                    //有拦截
                    //let url = window.URL.createObjectURL(new Blob([res]))
                    let link = document.createElement('a')
                    link.style.display = 'none'
                    link.href = url
                    link.setAttribute('download', name+'.xls')
                    document.body.appendChild(link)
                    link.click()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章