簡體   English   中英

獲取API句柄並讀取錯誤響應

[英]Fetch api handle and read error responses

我在JavaScript中有以下fetch API調用

async doCheckin(authCode) {
    return await fetch(endpoint + "/checkin", {
        method: "put",
        headers: new Headers({'content-type': 'application/json'}),
        body: JSON.stringify({authCode: authCode})
    })
        .then(this.checkStatus)
        .then(this.toJson)
        .catch(function (error) {
            console.error("Checkin not successful");
            throw error;
        });
}

async checkStatus(response) {
    if (response.status >= 200 && response.status < 300) {
        return Promise.resolve(response)
    } else {
        let errorJson = await response.json();
        return Promise.reject(errorJson.code);
    }
}

toJson(response) {
    return response.json()
}

該函數這樣調用

   let checkIn = (await apiService.doCheckin(code)
        .catch(displayError));

該調用應處理來自服務器的JSON中的錯誤響應,並顯示錯誤代碼。 我注意到某些應用程序內移動瀏覽器無法處理錯誤情況,並在let errorJson = await response.json();失敗let errorJson = await response.json();

這是處理和讀取錯誤響應的正確方法,還是有更好的方法來實現?

使用此問題:

讓errorJson =等待response.json();

是您沒有處理方法調用json()失敗的情況。 相反,您應該在處理它的地方做類似的事情。

try {
  let errorJson = await response.json();

  return Promise.reject(errorJson.code);
} catch (e) {
  // I don't know what error is occurring so just reject with a 503 
  return Promise.reject('503');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM