Maison >interface Web >js tutoriel >Comment pouvez-vous gérer efficacement les erreurs de récupération basées sur les codes d'état HTTP ?

Comment pouvez-vous gérer efficacement les erreurs de récupération basées sur les codes d'état HTTP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-10 02:13:02600parcourir

How Can You Gracefully Handle Fetch Errors Based on HTTP Status Codes?

Capturer les erreurs de récupération avec l'état de la réponse

Vous exploitez l'API fetch() avec Redux et la bibliothèque redux-promise-middleware. Dans votre extrait de code, vous essayez de vérifier l’état de la réponse et de gérer les erreurs. Cependant, vous rencontrez un problème où la promesse n'est pas rejetée.

Comprendre les rejets de promesse de récupération

Les promesses de récupération sont uniques dans le sens où elles sont rejetées uniquement en raison de erreurs de réseau. Les réponses avec des codes d'état tels que 4xx (erreurs client) et 5xx (erreurs serveur) sont considérées comme des erreurs non liées au réseau. Par conséquent, ils ne déclencheront pas de rejet.

Résoudre le problème

Pour surmonter cette limitation et gérer les erreurs liées au statut, vous devez générer manuellement une erreur :

fetch(url)
  .then((response) => {
    if (response.ok) {
      return response.json();
    }
    throw new Error('Something went wrong');
  })
  .then((responseJson) => {
    // Handle the data
  })
  .catch((error) => {
    // Handle the error
  });

Cet extrait de code vérifie l'état de la réponse (response.ok). Si ce n'est pas OK, une erreur est générée qui déclenche le gestionnaire Promise#catch(). Cela vous permet de gérer gracieusement les erreurs basées sur les codes d'état HTTP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn