记录axios响应拦截器配置-reques.js

import axios from 'axios';
import { baseURL, timeout } from '../config/api';

// 请求数据体的head
// let dataHead = {
//   agentId: '',
//   agentName: '',
//   tradeNo: ''
// };

// 实例
const Axios = axios.create({
  baseURL,
  timeout, // 请求超时时间
  withCredentials: true
});


// 配置请求拦截器
Axios.interceptors.request.use(config => {
  // TODO 请求添加参数、修改请求头等操作

  // 例如:封装请求数据结构
  // if (_.lowerCase(config.method) === 'post' && !_.isEmpty(config.data)) {
  //     config.data.head = dataHead;
  // }

  return config;
}, error => {
  if (error.message && error.message.indexOf('timeout') >= 0) {
    console.error('请求超时');
  } else {
    console.error(error);
  }

  return Promise.reject(error);
});


// 配置响应拦截器
Axios.interceptors.response.use(res => {
  if (res.data && res.data.errorCode !== undefined) {
    if (res.data.errorCode.toString() === '0') {
      // TODO 此处可对响应内容进行一些通用处理...

      return res.data;
    } else {
      // 业务处理失败,此处可以进行一些通用错误处理,或者直接抛出api调用处的catch处理

      console.error(res.data);
      return Promise.reject(res.data);
    }
  } else {
    const errorMsg = `无响应内容,或响应内容格式有误,请检查接口。data: ${JSON.stringify(res.data)}`;
    console.error(errorMsg);
    return Promise.reject(new Error(errorMsg));
  }
}, error => {
  // TODO 此处可以对响应异常进行一些通用处理,一般是http响应码403、404、500
  console.error(error);

  return Promise.reject(error);
});

export default Axios;

 

posted @ 2021-12-29 20:13  不如饲猪  阅读(296)  评论(0)    收藏  举报