vue 中 Axios 异常拦截

176 阅读1分钟

请求添加Authorization,返回值过滤校验,通过element-ui抛出message弹框

import axios from 'axios';
import { Message } from 'element-ui'
const service = axios.create({
    // process.env.NODE_ENV === 'development' 来判断是否开发环境
    // timeout: 5000
});
service.interceptors.request.use(
    config => {
        // 添加Authorization
        if (sessionStorage.getItem('token')) {
            config.headers.Authorization = sessionStorage.getItem('token');
        }
        return config;
    },
    error => {
        console.log(error);
        return Promise.reject();
    }
);

service.interceptors.response.use(
    response => {
    	// 外层http码判断
        if (response.status === 200) {
        	// 内层约定code码判断
            if (response.data.code === 200) { // code等于200放行
                return response.data;
            } else if(response.data.code === 300){ // 特殊约定code处理
                return response.data;
            } else { // 其他code拦截,请求失败
                Message.error(response.data.msg)
                return Promise.reject();
            }
        } else if (response.status === 401) {
            //TODO token过期
        } else {
            return Promise.reject();
        }
    },
    error => {
        console.log(error);
        return Promise.reject();
    }
);

export default service;