Я использую fetch для получения данных из моей службы REST. Как только появится ответ, я хочу получить сообщение об ошибке, если оно есть, и отобразить его пользователю (пользователь в основном я).
fetch(address, attributes).then(response => {
if (!response.ok) {
if (response.status === 404) {
return {
text: "Server not found!",
status: "danger"
};
}
return {
text: response.text(),
status: "danger"
};
}
return {
text: "Success!",
status: "success"
};
}
response.text()
Часть является важным: Моим Backend посылает javax.rs reponse с String , как объект, например , «Error». Здесь я хочу прочитать его, но ответ. {"Msg": "[error]"} возвращает только объект Promise, который только возвращает больше объектов Promise при их разрешении.
Я также попытался использовать, reponse.json().msg
а затем проанализировать его здесь, вместо этого, но это тоже не сработало.// Success test case fetch("https://jsonplaceholder.typicode.com/posts/1").then(response => { if (!response.ok) { if (response.status === 404) { return { text: "Server not found!", status: "danger" }; } return response.text().then(text => { return { text: text, status: "danger" }; }) } return { text: "Success!", status: "success" }; }).then(resp => { console.log("result:", resp); }) // Failure test case 404 fetch("https://jsonplaceholder.typicode.com/posts/Not_Exist").then(response => { if (!response.ok) { if (response.status === 404) { return { text: "Server not found!", status: "danger" }; } return response.text().then(text => { return { text: text, status: "danger" }; }) } return { text: "Success!", status: "success" }; }).then(resp => { console.log("result:", resp); }) // For testing Errors other then 404, i changed 404 error in the code because i couldn't get other HTTP Errors from placeholder api fetch("https://jsonplaceholder.typicode.com/posts/Not_Exist").then(response => { if (!response.ok) { if (response.status === 999) { return { text: "Server not found!", status: "danger" }; } return response.text().then(text => { return { text: text, status: "danger" }; }) } return { text: "Success!", status: "success" }; }).then(resp => { console.log("result:", resp); })
reactjs,rest,promise,fetch,