澄清“400 - 错误请求”

Clarifying "400 - Bad Request"

我故意从我的后端触发错误请求。使用 express 的后端正在按预期正确回答:

[...]

.catch((error) => {
  res.statusCode = 400;
  res.json({
    msg: "This is some error",
    err: error,
  });
});

我的问题是:400 是否总是出现在浏览器控制台中?我以为我以正确的方式处理了错误。

为什么我必须使用

在前端检索数据
// 400: 
function (data) {
  var data = data.responseJSON.msg);
}

而不是(类似于 200:)

// 400: 
function (data) {
  var data = data.msg);
}

我只是想知道,如果我做错了什么。

感谢任何建议

异步获取数据时,2** 响应代码以外的任何响应都由 .catch 块处理。因此,任何其他响应,无论是 4** 还是 5** 都会被 catch 块捕获,因此,如果您使用的是 Axios 之类的库,则后端的响应将在 error.responsedata.response 在你的情况下。

我不知道你用什么来执行异步获取数据,即 Fetch Api 所以我的回答是一个通用的响应,上面的代码是否完整?

根据我的经验,无论是异步调用产生的任何错误都会记录到控制台,但您可以从前端在 catch 块中处理这些错误

问题是当 console.log 尝试输出错误时,打印的是字符串表示形式,而不是对象结构,因此您看不到 .response 属性 或你的情况 .responseJSON

通过使用 catch 块 .catch() 捕获错误,或者如果您使用 async / await,您通常应该将代码包装在 try / catch 中以捕获错误,否则它会总是在控制台输出这个红色错误