当响应返回适当的错误消息React时处理提取错误

时间:2019-04-30 15:12:29

标签: javascript reactjs error-handling fetch

我具有以下提取功能

request(url, options) {
  return fetch(url, _.defaultsDeep(options || {}, defaultOptions))
     .then(handleErrors)
     .then(response => response.json())
     .catch(error => handleFetchError(error));
}

handleErrors函数执行以下操作以检查响应是否失败...

function handleErrors(response) {
   if (!response.ok) {
      throw new Error(response.statusText);
   }
   return response;
}

我遇到的问题是API返回400状态,而且返回具有相关错误消息的数组,但是使用throw new Error(response.statusText);仅返回一些通用错误消息{{1} }否只能访问错误数组。

这是我期望在响应中返回的内容

Error: [object Object]

我无权访问API服务器端,因此无法在此进行任何更改。

但是有没有一种方法可以引发错误,但是我也可以访问响应中的{ "status": 400, "error": "Bad Request", "errors": [ { "defaultMessage": "Please check that your name contains only letters and is longer than two characters" } ] } 数组?

编辑:

errors中,这是我收到的响应对象

handleErrors

当我抛出错误并尝试在{ "type": "default", "status": 401, "ok": false, "statusText": "", "headers": { "map": { "pragma": "no-cache", "date": "Wed, 01 May 2019 07:44:40 GMT", "x-content-type-options": "nosniff", "x-frame-options": "DENY", "content-type": "application/json;charset=ISO-8859-1", "cache-control": "no-cache, no-store, max-age=0, must-revalidate", "content-length": "53", "x-xss-protection": "1; mode=block", "expires": "0" } }, "url": "http://localhost:8080/login", "_bodyInit": {}, "_bodyBlob": {} } 中访问它时,handleFetchError参数只是一个空对象error

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试抛出mysql -u root -p -Nse "SHOW TABLES WHERE \`Tables_in_my_database\` != 'my_important_table'" my_database | \ while read table; do echo "SET FOREIGN_KEY_CHECKS = 0; truncate table $table;"; done | \ mysql -u root -p my_database ,但您的回复没有该属性。它有response.statusText