Adloun

JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 10 · Application directe du cours

Un titre indéfini

Dialoguer avec un serveur : fetch · niveau 2

Énoncé

Le programme erreurs/statut-ignore.mjs du cours affiche « Titre : undefined » pour un ISBN inexistant. Expliquer précisément pourquoi le catch n'est pas exécuté. Qu'afficherait le programme si le serveur répondait l'erreur 404 avec une page HTML au lieu de JSON ? Corriger le programme pour qu'il affiche « Erreur : Aucun livre d’ISBN 0000000000000. ».

Corrigé

Le serveur a répondu (404) : la promesse de fetch est tenue. Le corps est du JSON valide, {"erreur": "…"} : json() réussit aussi. Rien n'a levé d'exception ; l'objet n'a simplement pas de propriété titre. Avec une page HTML comme corps, c'est reponse.json() qui échouerait (une SyntaxError, le texte n'étant pas du JSON) : le catch s'exécuterait, mais avec un message trompeur, qui parle de syntaxe et non de livre introuvable. Correction : vérifier le statut avant de lire le corps, c'est-à-dire utiliser obtenirJson :


try {
  const livre = await obtenirJson("http://localhost:8000/api/livres/0000000000000");
  console.log("Titre :", livre.titre);
} catch (e) {
  console.log("Erreur :", e.message);
}

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →