Adloun

JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 10 · Exercice de TD

Passer commande

Dialoguer avec un serveur : fetch · niveau 2

Énoncé

Écrire async function commander(commande), qui envoie la commande au serveur et renvoie une phrase : « Commande n° 1001 enregistrée, total 122,00 €. » en cas de succès, « Commande refusée : » suivie de la liste des erreurs en cas de refus (400), et qui lève une erreur pour tout autre statut. Quelle commande valide donne un total de 122 € ?

Corrigé


async function commander(commande) {
  const reponse = await fetch("http://localhost:8000/api/commandes", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(commande),
  });
  const corps = await reponse.json();
  if (reponse.status === 201) {
    return `Commande n° ${corps.numero} enregistrée, total ${corps.total.toFixed(2).replace(".", ",")} €.`;
  }
  if (reponse.status === 400) {
    return `Commande refusée :\n${corps.erreurs.map((e) => `  - ${e}`).join("\n")}`;
  }
  throw new Error(`réponse inattendue : ${reponse.status}`);
}

Un exemplaire de « Programmation Java » (32 €) et deux d'« Analyse MPSI » (), retirés en boutique, font €. Avec cinq « Introduction à l'algorithmique » et un mode de retrait « voiture », le programme exercices/ex5-commande.mjs affiche :


Commande refusée :
  - Stock insuffisant pour « Introduction à l’algorithmique » (3 en stock).
  - Le mode de retrait est invalide.

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 →