vue中 request.js

import router from "@/router/index";

import {

  getToken

} from "@/utils/token";

import axios from "axios";

import {

  Message

} from 'element-ui';

import qs from "qs";

import Store from '@/store';

import config from '@/util/config';


 

const api = "/test"

  

const service = axios.create({

  baseURL: config.domain,

  timeout: config.timeout                

  crossDomain: true,

});

service.interceptors.request.use(

  (config) => {

    const Token = getToken();

    if (Token) {

      config.headers["Authorization"] = `${Token}`;

    }

    if (

      (config.method === "post" ||

        config.method === "POST" ||

        config.method === "put") &&

      config.type !== "json" && config.url.indexOf(api) === -1

    ) {

      config.data = qs.stringify(config.data);

    }

    return config;

  },

  (error) => {

    errorMsg(error.response)

    return Promise.reject(error);

  }

);

service.interceptors.response.use(

  (response) => {

    const {

      data,

      config

    } = response;

    if (data || data.code === 200 || config.responseType === 'blob') {

      return data;

    } else {

      errorMsg(response)

      return Promise.reject(response);

    }

  },

  (error) => {

    errorMsg(error.response)

    return Promise.reject(error.response.data); // 可在组件内获取到服务器返回信息

  }

);

//失败函数

const errorMsg = (err) => {

  /**

   * @err {

   *     data:{code:...,msg:...},

   *     status:...,

   *     config:{...}

   *    }

   */

  let errMsg = '',

    realCode = 0

  //判断报错的code 优先判断数据code

  if (err.data && err.data.code) {

    const {

      code,

      msg

    } = err.data

    realCode = code

    errMsg = msg || '接口未知错误,请联系管理员'

  } else if (err.status) {

    switch (Number(err.status)) {

      case 401:

        errMsg = '错误401-接口无权限'

        break

      case 404:

        errMsg = '错误404-接口路径错误'

        break

      case 500:

        errMsg = '错误500-服务器内部错误'

        break

      case 502:

        errMsg = '错误502-网关错误'

        break

      case 503:

        errMsg = '错误503-系统服务升级中'

        break

      case 504:

        errMsg = '错误504-响应超时,请稍后重试'

        break

      default:

        errMsg = `错误${Number(err.status)}-未知错误`

        break

    }

  }

    Message.error({

      message: errMsg,

      duration: 3000,

    })

  if (Number(realCode) === 401 || Number(realCode) === 403) {

    Store.dispatch('user/logOut', 1) /

    if (router) {

      router.push('/login')

    }

  }

}

export default service;

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值