Attualmente sto lavorando a un progetto con un'organizzazione come segue:
- Cliente : recupera i dati dal server principale tramite REST API.
- Server : richiede dati da vari altri server tramite API di terze parti
- API di terze parti : servizi fuori dal mio controllo che forniscono dati al server (Reddit, Hackernews, Quora, ecc.)
Per ragioni, supponiamo che il cliente abbia bisogno di un elenco di elementi di ciascuna API di terze parti. Da questo elenco, verrà scelto un elemento a cui il cliente ha bisogno di vedere il contenuto completo dell'articolo e le risposte (cioè i commenti) all'elemento. Sto cercando di decidere tra tre opzioni:
A la Carte
In questo approccio, avrei 3 endpoint separati sul mio server: uno per ottenere l'elenco degli elementi, uno per ottenere il contenuto principale per un elemento e uno per ottenere le risposte dell'articolo.
- Pro: non faccio mai più richieste del necessario, le richieste dovrebbero essere piccole, quindi in genere dovrebbero essere più veloci.
- Contro: devo fare molte richieste. Dopo aver scelto un elemento dall'elenco, l'utente potrebbe dover attendere prima di vedere il contenuto principale e quindi attendere ancora più a lungo per vedere le risposte
Cache lato server
In questa richiesta, farei una singola chiamata al mio server per "recuperare" tutti i dati per tutte le fonti. I dati verrebbero quindi memorizzati nella cache sul server. Il client avrebbe quindi gli stessi endpoint REST di prima, tranne che non ci sarebbe molto da attendere tra le chiamate poiché il mio server ha già i dati e deve solo alimentare il client.
- Pro: ancora facile da implementare dal lato client, ma senza problemi di latenza
- Contro: un po 'più coinvolto lato server, e la prima chiamata potrebbe richiedere davvero molto tempo.
Cache lato client
Questo scenario è simile al precedente, tranne che il client fa sempre una richiesta al server: dammi tutti i dati. Da qui è responsabilità del cliente salvare i dati e utilizzarli in modo appropriato.
- Pro: implementazione semplice del server, molto veloce dopo la prima chiamata
- Contro: la prima chiamata sarà molto lenta, più complicata per l'implementazione lato client
Non sono sicuro quale sia l'approccio migliore, o se forse mi manca l'ovvia soluzione. Qualsiasi consiglio sarebbe molto apprezzato!