javascript - 从 Fetch 中捕获 200 OK 以外的响应

标签 javascript http fetch-api ecmascript-2017

我正在使用指定的本地提取库 here .似乎每当返回 200 OK 以外的响应时,它都会抛出字符串响应异常 Uncaught (in promise) TypeError: Failed to fetch

有没有办法在特定的 HTTP 响应代码上捕获和分支并仍然查看响应数据?例如 401 响应?

我附上了我用作提取包装器的请求代码。

static request(url, data) {

    let headers = {
        "Authorization": window.localStorage.getItem("Authorization"),
        "Content-Type": "application/json"
    };

    let options = {
        method: "GET",
        headers: headers,
        mode: "no-cors",
        cache: "no-cache",
    };

    if (data) {
        options = {
            method: "POST",
            headers: headers,
            mode: "no-cors",
            cache: "no-cache",
            body: JSON.stringify(data)
        }
    }

    return new Promise(async (resolve, reject) => {

        try {

            let response = await fetch(url, options);
            let jsonResponse = await response.json();
            return resolve(jsonResponse);

        } catch (error) {
            // hashHistory.push("/login");
            return reject(error);
        }

    })

}   

最佳答案

“对成功的 fetch() 的准确检查包括检查 promise 是否已解决,然后检查 Response.ok 属性的值为真。代码看起来像这样 ( https://developer.mozilla.org/pt-BR/docs/Web/API/Fetch_API/Using_Fetch#Checking_that_the_fetch_was_successful ):

fetch('flowers.jpg').then(function(response) {
  if(response.ok) {
    response.blob().then(function(myBlob) {
      var objectURL = URL.createObjectURL(myBlob);
      myImage.src = objectURL;
    });
  } else {
    console.log('Network response was not ok.');
  }
})
.catch(function(error) {
  console.log('There has been a problem with your fetch operation: ' + error.message);
});

关于javascript - 从 Fetch 中捕获 200 OK 以外的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45024107/

相关文章:

javascript - react : Boolean variables to indicate a successful fetch before rendering

javascript - 如何在给定的 map 投影中执行 d3.svg.arc?

javascript - 谷歌搜索框需要移动到屏幕中间(X :0 Y:0)

JavaScript 验证和重定向不起作用

linux - 如何在没有 SSL 证书的情况下将 HTTPS 重定向到 HTTP

Angular 4 - TypeError : Cannot read property 'length' of null

html - 在 URL 中传递用户名和密码不起作用

ajax - Wordpress 在使用 fetch API 进行 ajax 调用时返回 400 Bad Request

javascript - JS 双取条件

javascript - html5 类型 ="number"工作速度太慢