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
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.