Sobes.tech
Senior

Parlez du principe de Code-On-Demand.

sobes.tech IA

Réponse de l'IA

Le principe de Code-On-Demand (Code à la demande) est l’un des styles architecturaux optionnels d’interaction dans REST, où le serveur peut temporairement étendre la fonctionnalité du client en lui envoyant du code exécutable.

Cela permet de rendre le client plus léger, en transférant une partie de la logique vers le serveur, qui se charge "à la demande" si nécessaire.

Exemples d’utilisation :

  • JavaScript dans les applications web : Le serveur envoie du code JavaScript au navigateur, qui s’exécute côté client pour réaliser de l’interactivité, la validation des données, des requêtes asynchrones, etc.
  • Plugins et extensions : Le serveur peut fournir du code pour étendre la fonctionnalité de l’application ou du client.

Avantages :

  • Réduction de la quantité de données transmises : Le code n’est envoyé que lorsque son utilisation est nécessaire.
  • Flexibilité : Le serveur peut modifier dynamiquement le comportement du client.
  • Client plus léger : Le client n’a pas besoin d’implémenter toute la fonctionnalité possible à l’avance.

Inconvénients :

  • Complexité de l’implémentation et sécurité : Un mécanisme est requis pour transmettre et exécuter de manière fiable le code côté client.
  • Performance : Le chargement et l’exécution du code peuvent prendre du temps.
// Exemple de Code-On-Demand sur le web : le serveur envoie du JS pour valider un formulaire
// Le serveur envoie du HTML avec un formulaire et un script
/*
<html>
<body>
  <form id="myForm">
    <input type="text" id="myInput">
    <button type="submit">Envoyer</button>
  </form>

  <script src="/validate.js"></script> // Le script est chargé "à la demande"
</body>
</html>
*/

// Contenu de /validate.js
// Ce code s’exécute côté client après son chargement
document.getElementById('myForm').addEventListener('submit', function(event) {
  const input = document.getElementById('myInput');
  if (input.value.trim() === '') {
    alert('Le champ ne peut pas être vide !');
    event.preventDefault(); // Annule l’envoi du formulaire
  }
});