有没有办法防止 Axios 在响应代码为 500(或不是 200)时抛出错误?

1.2*_*tts 5 node.js axios

是否有一个选项axios可以防止它在响应代码不是 200 时抛出错误?

目前,当用户正确登录时,响应代码为200。如果用户登录失败,响应代码为500。

如果 axios 在状态代码 500 上抛出错误,我的代码将变得更加冗长:

这:

  var result = await axios.post(url, data, headers);
  var data = result.data;
Run Code Online (Sandbox Code Playgroud)

变成:

try {
    var result = await axios.post(url, accessOptions, headers);
    var data = result.data;
}
catch(error) {
    data = error.response.data;
}
Run Code Online (Sandbox Code Playgroud)

换句话说,我想告诉axios“你不用担心抛出错误,让我担心空白。” 让我使用 try catch 来处理语法错误或其他错误,而不是登录失败响应代码 500。

gri*_*eel 8

您可以使用validateStatus配置选项

  var result = await axios.post(url, data, {
    headers,
    // Don't throw when the status code is 500
    validateStatus: status => (status >= 200 && status < 300) || status === 500
  });
  var data = result.data;
Run Code Online (Sandbox Code Playgroud)
  var result = await axios.post(url, data, {
    headers,
    // Never throw
    validateStatus: () => true
  });
  var data = result.data;
Run Code Online (Sandbox Code Playgroud)