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()

 

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