大多自己的项目都会重新封装一下axios来调用接口,减少很多公共参数代码
第一步:安装依赖

npm i axios vue-axios --save

第二步:引入依赖包

import axios from 'axios'

第三步:代码实现

const http = axios.create({
baseURL: '/api',	// 统一设置请求头地址前缀
timeout: 6000	// 请求超时时间
})

// 请求拦截,同意在请求时带上 token  
http.interceptors.request.use(function(config) {
// 获取 token
const token = sessionStorage.getItem('token');
if(token) {
// 在请求头上带上 token 固定写法
config.headers['Authorization'] = 'Bearer ' + token;
}
return config;
}, function (error) {
console.log("请求拦截错误:",error);
return Promise.reject(error);
});


// 相应拦截 主要是处理错误的,比如: token 不合法
http.interceptors.response.use(function (response) { 	// 处理正确时
if(response.data.token) {
// 将服务器返回的最新 token 返回到本地服务器中
sessionStorage.setItem('token', response.data.token);
}
return response;
}, function (error) {	// 处理错误时
console.log("服务器响应错误:", error);
const _response = error.response;
switch(_response.status) {
case 401:
// 没有权限了 跳转页面
return router.replace({
path: '/login',
query: {redirect: router.currentRoute.fullPath};
})
case 403:
// 禁止访问 了
break;
case 500:
//break;
}
return Promise.reject(error);
});
// 暴露当前的 http 
export default http;
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐