[英]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.