进行API调用时,Axios拦截器不会拦截错误状态

时间:2019-10-31 16:14:31

标签: node.js reactjs axios

我试图拦截所有401响应,然后将它们重定向到另一页。

这是我为实例所做的

const instance = axios.create({
  baseURL: "https://api.example.com/",
  withCredentials: true
});

// Add a response interceptor
instance.interceptors.response.use(
  function(response) {
    return response;
  },
  function(error) {
    if (401 === error.response.status) {
        console.log('intercepted');
        window.location = "/login";
    } else {
      return Promise.reject(error);
    }
  }
);

export default instance;

在我的API服务文件中,我正在使用实例调用axios。

import axiosInstance from "../utils/axiosInstance";
const response = await axiosInstance.post("/player/new", bodyFormData);

此API将返回401,但是拦截器没有捕获到它,我可以在网络开发工具中看到失败的请求。

1 个答案:

答案 0 :(得分:0)

您应该将拦截器添加到axios instance而非axios本身,如documentation中指出的那样:

instance.interceptors.response.use(
  function(response) {
    return response;
  },
  function(error) {
    if (401 === error.response.status) {
        console.log('intercepted');
        window.location = "/login";
    } else {
      return Promise.reject(error);
    }
  }
);