axios封装的请求方法

17 篇文章 0 订阅

request.js

import axios from 'axios';
import {
  getToken
} from '@/utils/auth';
// eslint-disable-next-line
import Message from 'iview/src/components/message';

const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_URL,
  timeout: 10000
});

export function isOk (response) {
  const {
    data: responseData
  } = response || {};
  return responseData !== undefined && responseData.errorMsg === 0;
}

export function hasError (response) {
  return !isOk(response);
}

export function getResponseData (response) {
  const {
    data: responseData
  } = response || {};
  const {
    data
  } = responseData || {};
  return data;
}

// request interceptor
service.interceptors.request.use(
  (config) => {
    const token = getToken() || 'token';
    if (token) {
      return {
        ...config,
        headers: {
          ...config.headers,
          AUTHORIZATION: `Bearer ${token}`
        }
      };
    }
    return config;
  },
  (error) => {
    Message.error(error.message || '未知错误');
    Promise.reject(error);
  }
);

const codeMessage = {
  200: '服务器成功返回请求的数据。',
  201: '新建或修改数据成功。',
  202: '一个请求已经进入后台排队(异步任务)。',
  204: '删除数据成功。',
  400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
  401: '用户没有权限(令牌、用户名、密码错误)。',
  403: '用户得到授权,但是访问是被禁止的。',
  404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
  406: '请求的格式不可得。',
  410: '请求的资源被永久删除,且不会再得到的。',
  422: '当创建一个对象时,发生一个验证错误。',
  500: '服务器发生错误,请检查服务器。',
  502: '网关错误。',
  503: '服务不可用,服务器暂时过载或维护。',
  504: '网关超时。'
};

service.interceptors.response.use(
  (response) => {
    const {
      status
    } = response;
    const {
      data
    } = response;
    if (status >= 200 && status < 300 && data && data.error === 0) {
      return response;
    }
    if (data && data.error === 403) {
      window.location.href = '/login';
    }
    const errorText = data.msg || codeMessage[response.status] || response.statusText;
    // Message(errorText || '未知错误');
    const error = new Error(errorText);
    error.name = data.error || status;
    error.response = response;
    return Promise.reject(error);
  },
  (error) => {
    Message.error(error.message || '未知错误');
    return Promise.reject(error);
  }
);

export default service;

使用:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值