获取Api javascript错误时会收到JSON

时间:2017-11-30 22:36:26

标签: javascript json fetch-api

我使用fetch将数据发布到服务器:

fetch(url, {
    method: 'post'
  })
  .then(status)
  .then((data) => {
    console.log(data);
  }).catch((error) => {
    console.log('error: ' + error);
  });
});

这是状态方法

const status = (res) => {
  console.log(res);
  if(res.status >= 200 && res.status < 300) {
    return Promise.resolve(res.json());
  } else {
    return Promise.reject(res.json());
  }
}

如果代码是200,那么它工作正常(我收到我的JSON)。但如果不是,我会抓住错误并记录下来。它显示未经授权但我希望我收到我的错误JSON。像这样的东西

{ 
 "status": 400,
 "error": "pass is not corret"
}

如何捕获我的Json错误?

2 个答案:

答案 0 :(得分:0)

此时我认为你只需要从响应中返回JSON。无论你是否都在返回JSON,你的条件判断?:

const status = (res) => {
  console.log(res);
  if (res.status >= 200 && res.status < 300) {
    return res.json();
  }
}

答案 1 :(得分:0)

res.json()返回Promise。当你致电Promise.reject时,你只能通过拒绝理由。就像字符串,对象或错误一样,描述了你拒绝的原因。

我会将代码更改为

const status = (res) => {
  return new Promise((resolve, reject) => {
    res.json().then((json) => {
      if(res.status >= 200 && res.status < 300) {
        resolve(json);
      }
      else {
        reject(json)
      }
    });
  });
}

来源: