J'utilise la bibliothèque de récupération native comme indiqué here. Il semble que chaque fois qu'une réponse autre qu'un 200 OK est renvoyé, il déclenche une exception avec la réponse de chaîne Uncaught (in promise) TypeError: Failed to fetch
.Capture des réponses autres que 200 OK à partir de l'extraction
Existait-il un moyen d'intercepter et de se ramifier sur des codes de réponse HTTP spécifiques tout en affichant les données de réponse? Par exemple une réponse 401?
J'ai joint mon code de requête que j'utilise comme enveloppe pour l'extraction.
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);
}
})
}
D'une manière générale, vous ne devez jamais construire un 'Promise' vous objet. Vous pouvez attendre 'fetch' directement dans votre fonction' request'. – Dai
[Ne jamais passer une 'fonction async' à' new Promise'!] (Https://stackoverflow.com/questions/43083696/cant-throw-error-from-within-an-async-promise-executor-function/ 43083793 # 43083793) – Bergi
Je pense que c'est la source principale du problème! Merci pour la révision du code –