Attualmente sto lavorando a un progetto con un'organizzazione come segue:
- Client : ottiene i dati dal server principale tramite API REST.
- 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 di argomento, supponiamo che il client abbia prima bisogno di un elenco di elementi da ciascuna delle API di terze parti. Da questo elenco, verrà scelto un elemento nel momento in cui il cliente deve vedere l'intero contenuto dell'articolo nonché le risposte (ovvero 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 articoli, uno per ottenere il contenuto principale per un articolo e uno per ottenere le risposte dell'articolo.
- Pro: non faccio mai più richieste del necessario, le richieste dovrebbero essere piccole, quindi generalmente dovrebbero essere più veloci.
- Contro: devo fare molte richieste. Dopo aver scelto un elemento dall'elenco, l'utente potrebbe dover attendere prima di visualizzare il contenuto principale e quindi attendere ancora di più per visualizzare 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 molta attesa tra le chiamate poiché il mio server ha già i dati e deve solo inviarli al client.
- Pro: ancora facile da implementare sul 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 per il fatto che il client fa una sola richiesta al server: dammi tutti i dati. Da qui è responsabilità del cliente salvare i dati e utilizzarli in modo appropriato.
- Pro: implementazione del server semplice, molto veloce dopo la prima chiamata
- Contro: la prima chiamata sarà molto lenta, più complicata implementazione sul lato client
Non sono sicuro di quale sia l'approccio migliore o se forse mi manca la soluzione ovvia. Qualsiasi consiglio sarebbe molto apprezzato!