4.10. Gestione dello stato dell'applicazione
4.10. Gestione dello stato dell'applicazione
Le applicazioni che utilizzano HTTP devono considerare attentamente come gestiscono lo stato. HTTP è spesso descritto come "senza stato", il che significa che ogni richiesta è indipendente e il server non ha bisogno di ricordare le richieste precedenti. Tuttavia, molte applicazioni necessitano di qualche forma di gestione dello stato.
Ci sono diversi modi per gestire lo stato nelle applicazioni HTTP:
-
Stato lato client: Il client mantiene lo stato e lo include in ogni richiesta. Questo è l'approccio più scalabile ma richiede che il client gestisca lo stato.
-
Stato lato server: Il server mantiene lo stato di ogni client, tipicamente identificato da un token di sessione. Questo è più conveniente per il client ma meno scalabile per il server.
-
Stato della risorsa: Lo stato è rappresentato come risorse che possono essere recuperate e modificate utilizzando metodi HTTP. Questo si allinea bene con i principi REST.
Le applicazioni DOVREBBERO preferire design senza stato dove possibile, poiché tendono ad essere più scalabili e più facili da implementare. Quando lo stato è necessario, le applicazioni DOVREBBERO:
-
Specificare chiaramente come viene mantenuto e identificato lo stato.
-
Considerare l'uso di cookie [COOKIES] per la gestione della sessione, ma essere consapevoli delle loro implicazioni per la sicurezza e la privacy.
-
Evitare di mantenere lo stato sul server che potrebbe essere mantenuto sul client.
-
Utilizzare token di autenticazione piuttosto che sessioni dove appropriato.
-
Progettare la gestione dello stato per funzionare con intermediari e cache.
Le applicazioni NON DOVREBBERO fare affidamento su funzionalità come la persistenza della connessione TCP per mantenere lo stato, poiché le connessioni possono essere chiuse o multiplexate.