Sobes.tech
Senior

Parla del principio di Code-On-Demand.

sobes.tech AI

Risposta dell'AI

Il principio di Code-On-Demand (Codice su richiesta) è uno degli stili architetturali opzionali di interazione in REST, in cui il server può temporaneamente estendere la funzionalità del client inviandogli codice eseguibile.

Questo permette di rendere il client più snello, trasferendo parte della logica al server, che viene caricato "su richiesta" quando necessario.

Esempi di utilizzo:

  • JavaScript nelle applicazioni web: Il server invia codice JavaScript al browser, che viene eseguito lato client per implementare interattività, validazione dei dati, richieste asincrone, ecc.
  • Plugin ed estensioni: Il server può fornire codice per espandere le funzionalità dell'applicazione o del client.

Vantaggi:

  • Riduzione del volume di dati trasmessi: Il codice viene inviato solo quando necessario.
  • Flessibilità: Il server può modificare dinamicamente il comportamento del client.
  • Client più leggero: Il client non necessita di implementare tutta la funzionalità possibile in anticipo.

Svantaggi:

  • Complessità di implementazione e sicurezza: È necessario un meccanismo per trasmettere ed eseguire in modo affidabile il codice sul lato client.
  • Prestazioni: Il caricamento e l'esecuzione del codice possono richiedere tempo.
// Esempio di Code-On-Demand nel web: il server invia JS per la validazione di un modulo
// Il server invia HTML con un modulo e uno script
/*
<html>
<body>
  <form id="myForm">
    <input type="text" id="myInput">
    <button type="submit">Invia</button>
  </form>

  <script src="/validate.js"></script> // Lo script viene caricato "su richiesta"
</body>
</html>
*/

// Contenuto di /validate.js
// Questo codice viene eseguito lato client dopo il caricamento
document.getElementById('myForm').addEventListener('submit', function(event) {
  const input = document.getElementById('myInput');
  if (input.value.trim() === '') {
    alert('Il campo non può essere vuoto!');
    event.preventDefault(); // Annulla l'invio del modulo
  }
});