vue axios封装,全局错误处理,使用ant-design-vue的message和model提示

在http.js文件中

/**axios封装

* 请求拦截、相应拦截、错误统一处理

*/

import axios from 'axios';

import QS from 'qs';

import {getCookie}from './util'

import {message, Modal }from 'ant-design-vue'

// message的基础配置

message.config({

duration:2,// 提示时常单位为s

  top:'200px',// 距离顶部的位置

  maxCount:3 // 最多显示提示信息条数(后面的会替换前面的提示)

})

// 请求超时时间

axios.defaults.timeout = 10000;

axios.defaults.headers.common['Authorization'] = getCookie(token);

// post请求头

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';

// 请求拦截器

axios.interceptors.request.use(   

    config => {

        return config;   

    },   

    error => {       

        return Promise.error(error);   

    })

// 响应拦截器

axios.interceptors.response.use(   

    response => {       

        if (response.status === 200) {           

            return Promise.resolve(response);       

        } else {           

            return Promise.reject(response);       

        }   

    },

    // 服务器状态码不是200的情况   

    error => {       

        if (error.response.status) {  //服务器状态码的异常

            switch (error.response.status) { 

             // 403 token过期

                 case 403:      

                        message.error('登录过期,请重新登录') ;

                    break;

                // 404请求不存在               

                case 404:      

                     message.error('网络请求不存在');

                break;               

                // 其他错误,直接抛出错误提示               

                default:  

                     message.error(error.response.data.errMsg) ;

            }           

            return Promise.reject(error.response);       

        }     

    }

);

/**

* get方法,对应get请求

* @param {String} url [请求的url地址]

* @param {Object} params [请求时携带的参数]

*/


export function get(url, params){   

    return new Promise((resolve, reject) =>{       

        axios.get(url, {           

            params: params       

        })       

        .then(res => {           

                if(response.data.code ==401 || response.data.code ==10003){  //业务代码中的异常

                    message.error(response.data.errorMsg);

                    setTimeout(function () {

                            window.location.href='./login'  //error

                      },3000)

                }

            resolve(res.data);       

        })       

        .catch(err => {           

            reject(err.data)       

        })   

    });

}


message的提示框,如图,没有遮罩层,只有提示语!  我选的error 的icon,另外还有success,warnimg和 info  ,图标各不相同!

 this.$message.success('This is a success message');

 this.$message.error('This is an error message');

 this.$message.warning('This is a warning message');

 this.$message.info('This is a normal message');


/**

* post方法,对应post请求

* @param {String} url [请求的url地址]

* @param {Object} params [请求时携带的参数]

*/

export function post(url, params) {   

    return new Promise((resolve, reject) => {       

        axios.post(url, QS.stringify(params))       

        .then(res => {

                if(response.data.code ==401  ||  response.data.code ==10003){

                        Modal.warning({

                            title:response.data.errorMsg,

                            okText:'确认',// 设置按钮内容,默认为 OK

                            onOk: () => {// 点击确认后的回调

                                window.location.href='./login' //error

                            }

                        })

                }

            resolve(res.data);       

        })       

        .catch(err => {           

            reject(err.data)       

        })   

    });

}


model 提示框,有遮罩层,有确定按钮,也可以有取消按钮。icon也有 success  error   warning  info 几种情况

你可能感兴趣的:(vue axios封装,全局错误处理,使用ant-design-vue的message和model提示)