axios 请求拦截器错误处理程序中错误对象的形状是什么?

zmi*_*mii 9 javascript node.js typescript axios

技术说明: 由于 axios 对 Node 和浏览器使用不同的库/机制,因此这个问题仅Node.js涉及axios@0.18.0.

我可以为库设置以下拦截器axioshttps://github.com/axios/axios#interceptors):

// Add a request interceptor
axios.interceptors.request.use(function (config) {
    // Do something before request is sent
    return config;
  }, function (error) {
    // Do something with request error
    //
    // I am asking about this error handler and this error object
    //
    return Promise.reject(error);
  });

// Add a response interceptor
axios.interceptors.response.use(function (response) {
    // Do something with response data
    return response;
  }, function (error) {
    // Do something with response error
    return Promise.reject(error);
  });
Run Code Online (Sandbox Code Playgroud)

当请求拦截器的错误处理程序中描述的回调被触发时,该错误对象的形状是什么?

PS我看到这段代码描述了以下错误的工作axios

axios.get('/user/12345')
  .catch(function (error) {
    if (error.response) {
      // The request was made and the server responded with a status code
      // that falls out of the range of 2xx
      console.log(error.response.data);
      console.log(error.response.status);
      console.log(error.response.headers);
    } else if (error.request) {
      //
      //
      //  !!!! This is a request error handler !!!
      //
      //
      // The request was made but no response was received
      // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
      // http.ClientRequest in node.js
      console.log(error.request);
    } else {
      // Something happened in setting up the request that triggered an Error
      console.log('Error', error.message);
    }
    console.log(error.config);
  });
Run Code Online (Sandbox Code Playgroud)

error请求错误处理程序内部在后面的代码中代表什么?

e.d*_*dan 7

我认为这个源代码可能对你有帮助:

创建错误.js

它看起来像Error的一个实例,因此它有error.message、、、 、axios和,每个enhanceError.jserror.configerror.codeerror.requesterror.response


小智 5

当请求拦截器的错误处理程序中描述的回调被触发时,该错误对象的形状是什么?

当拦截器“拒绝”像代码的这一部分一样的承诺时,错误处理程序(.catch 子句)将由拦截器触发:

axios.interceptors.response.use(function (response) {
    // Do something with response data
    return response;
  }, function (error) {
    // Do something with response error
    return Promise.reject(error); // <---- HERE
  });
Run Code Online (Sandbox Code Playgroud)

axios 错误对象的形状是一个 JSON 对象,如github 上 axios 文档的处理错误部分所述

  • message:错误消息文本。
  • response:响应对象(如果收到),如上一节所述。在响应内部,您将拥有数据、状态和标头对象
  • request:在浏览器上运行时的实际 XMLHttpRequest 对象或node.js 中的 http.ClientRequest 实例。
  • config:原始请求配置。

请求错误处理程序中的错误在后面的代码中代表什么?

这将是您的 axios 拦截器绕过的请求的错误响应