前端axios请求封装以及拦截器

16 篇文章 0 订阅

前端axios请求封装以及拦截器

/*
 * @Descripttion:
 * @Author: sueRimn
 * @Date: 2020-07-07 09:31:13
 */

import axios from "axios";
import QS from "qs";
import { message } from "antd";
import store from "../store";
axios.defaults.timeout = 50000; //设置接口响应时间
// axios.defaults.withCredentials = true;
axios.defaults.baseURL = "http://xx.xx.xx.xxx:xxxx";

axios.interceptors.request.use(
  //config包含每次请求的信息
  (config) => {
    //拿请求路径
    //console.log('请求路径', config.url)
    //去缓存中拿token
    if (config.url == "/login") {
    } else {
      let token = store.getState().token; //从缓存中取token
      if(config.isUpload){
        config.headers = {
          'Content-Type': 'multipart/form-data',
          'Authorization': token
        }
      }else{
        config.headers.Authorization = token; //将token放到请求头发送给服务器
      }
    }
    //有token
    // if (token) {
    // config.headers.Authorization = token; //将token放到请求头发送给服务器
    // } else {
    //     //localStorage.clear();  //清空缓存
    //     //排除login请求接口
    //     if (router.currentRoute.name && router.currentRoute.name.toLowerCase() == "login") {

    //     } else {
    //         //否则 全部返回null
    //     }
    // }
    // console.log('请求的操作'+ JSON.stringify(config))
    return config;
  },
  (err) => {
    return Promise.reject(err);
  }
);
// http response 拦截器
axios.interceptors.response.use(
  (response) => {
    if (response.status === 200) {
    } else {
      message.error("响应不正常");
    }
    return response; //请求成功的时候返回的data
  },
  (error) => {
    try {
      console.log(error);
      if (error.response.status === 401) {
        message.error(error.response.data.msg);
        window.location.href = "/login";
        return;
      } else {
        return;
      }
    } catch (e) {
      console.log(e);
    }
  }
);
// 封装axios的get请求
export function getData(url, params) {
  return new Promise((resolve, reject) => {
    axios
      .get(url, { params: params })
      .then((response) => {
        resolve(response.data);
      })
      .catch((error) => {
        reject(error);
      });
  });
}
// 封装axios的post请求
export function postData(url, params, end) {
  return new Promise((resolve, reject) => {
    axios
      .post(url, QS.stringify(params))
      .then((response) => {
        if (response.status === 200) {
          resolve(response.data);
        }
      })
      .catch((error) => {
        reject(error);
      });
  });
}

export function UploadFile(url, data) {
  return new Promise((resolve, reject) => {
    // processData: false, // 告诉axios不要去处理发送的数据(重要参数)
    // contentType: false, // 告诉axios不要去设置Content-Type请求头
    console.log(data)
    axios.post(url, data ,{isUpload : true})
      .then((response) => {
        resolve(response);
      })
      .catch((error) => {
        reject(error);
      });
  });
}
export function Postdownload(url, params, responsetype) {
  return new Promise((resolve, reject) => {
    //{responseType:'blob'}
    axios
      .post(url, QS.stringify(params))
      .then((response) => {
        resolve(response);
      })
      .catch((error) => {
        reject(error);
      });
  });
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上天注定的姻缘最大嘛!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值