vue-cli3封装axios和请求异常拦截

在src下创建baseAPI文件夹在里面新建axiosApi.js 内容如下:

import axios from 'axios'//引入axios

import qs from 'qs' //axios POST请求传参方法

//在请求或响应被 then 或 catch 处理前拦截它们抛出问题所在

axios.interceptors.response.use(response => {

  // 在发送请求之前做些什么

  console.log('Request was sent');

  return response;

}, function (error) {

console.log(error.response.status)

      // 请求错误信息处理

  switch (error.response.status){

  case 400:

    Toast("错误请求");

  break;

case 401:

    Toast("未授权,请重新登录");

break;

case 403:

    Toast("拒绝访问");

break;

case 404:

    Toast("请求错误,未找到该资源");

break;

case 405:

    Toast("请求方法未允许");

break;

case 408:

    Toast("请求超时");

break;

case 500:

    Toast("服务器错误");

break;

case 501:

    Toast("网络未实现");

break;

case 502:

    Toast("网络错误");

break;

case 503:

    Toast("服务不可用");

break;

case 504:

    Toast("网络超时");

break;

case 505:

    Toast("HTTP版本不支持该请求");

break;

  default:

  break;

  }

    });

export default {//导出方法

/**

* GET方法

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

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

    */

GET(url,params={}){

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

            axios.get(baseUrl + url,{

            params:params

          }).then(response => {

            resolve(response);

          }) .catch(err => {

                reject(err);

          })

        })

    },

/**

    * POST方法

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

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

    */

POST(url, params) {

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

            axios.post(baseUrl + url, qs.stringify(params)).then(res => {

          if(res.data.state == 10402){//这是我接口返回验证令牌是否失效

           }else{

                   resolve(res);

            }

            }).catch(err => {

               reject(err);

            })

        });

    }

}

/**

*axios 自带请求超时属性设置

*timeout: 4000, // 4 seconds timeout 超时

**/


在main.js引入

import baseAPI from './baseAPI/axiosApi' //引用全局封装api接口请求

Vue.prototype.baseAPI= baseAPI//全局注册请求方法

在VUE页面使用POST方法

var url = "接口路径";

var obj = {"要传的参数"};

this.baseAPI.POST(url, obj).then(response => {

console.log(response)

}).catch((err) => {

console.log(err)

});

你可能感兴趣的:(vue-cli3封装axios和请求异常拦截)