Ho il seguente scenario: un'app client che consuma un'API REST. Il client è un'applicazione mobile. Pertanto, memorizza nella cache i dati API per il salvataggio della larghezza di banda e il supporto offline.
Con REST può essere fatto usando l'intestazione If-Modified-Since
. È, il sistema di gestione della cache dal lato client memorizza il HTTP-Date
e lo invia come intestazione all'interno della richiesta all'API, in cui, viene effettuato un controllo e si verifica di inviare uno stato '304 non modificato' nel caso in cui il la risorsa non è stata modificata dai dati specificati.
The "If-Modified-Since" header field makes a GET or HEAD request method conditional on the selected representation's modification date being more recent than the date provided in the field-value. Transfer of the selected representation's data is avoided if that data has not changed (rfc7232#section-3.3 If-Modified-Since).
Supponendo che, per "risorse", potrebbe essere una raccolta o un singolo record, la data di modifica sarebbe la data di modifica della risorsa (cioè, se si tratta di una raccolta di record, la data sarebbe l'intera data di modifica della raccolta ). Quindi, internamente farebbe una query di database per verificare se il record o la raccolta sono stati modificati da allora e produrre una risposta adeguata.
Finora, questo è il modo in cui intendo implementare la strategia di memorizzazione nella cache, il più possibile di REST.
Il problema è che è una decisione progettuale di alto impatto e non sono sicuro che sia un buon approccio o se ci sia un modo migliore di implementarlo. Tutta l'idea si basa sulla logica e su una piccola conoscenza REST e non sono riuscito a trovare alcuna risorsa su come implementarla.
Mi piacerebbe avere qualche critica su questo modello, se sia abbastanza buono, avere un approccio migliore o anche qualche avvertimento per migliorare l'idea attuale, sarebbe tutto apprezzato.