Je travaille actuellement sur un projet avec une organisation comme suit:
- Client - Obtient des données du serveur principal via l'API REST.
- Serveur - Demande des données à différents serveurs via des API tierces
- API tierces - Services hors de mon contrôle qui fournissent des données au serveur (Reddit, Hackernews, Quora, etc.)
Par souci d'argumentation, supposons que le client ait d'abord besoin d'une liste d'éléments de chacune des API tierces. À partir de cette liste, un élément sera choisi, à quel moment le client doit voir le contenu complet de l'élément ainsi que les réponses (commentaires) à l'élément. J'essaie de choisir entre trois options:
À la carte
Dans cette approche, j'aurais trois terminaux différents sur mon serveur: un pour obtenir la liste des éléments, un pour obtenir le contenu principal d'un élément et un pour obtenir les réponses de l'élément.
- Avantages: je ne fais jamais plus de demandes que nécessaire, les demandes doivent être petites, donc généralement plus rapides.
- Inconvénients: je dois faire beaucoup de demandes. Après avoir choisi un élément de la liste, l'utilisateur peut devoir attendre avant de voir le contenu principal, puis attendre encore plus longtemps pour voir les réponses.
Cache côté serveur
Dans cette demande, je ferais un seul appel à mon serveur pour "récupérer" toutes les données de toutes les sources. Les données seraient alors mises en cache sur le serveur. Le client aurait alors les mêmes points de terminaison REST qu'auparavant, sauf qu'il n'y aurait pas beaucoup d'attente entre les appels puisque mon serveur dispose déjà des données et doit simplement les transmettre au client.
- Avantages: toujours facile à mettre en œuvre côté client, mais sans les problèmes de latence
- Inconvénients: Un côté serveur un peu plus impliqué et le premier appel risque de prendre beaucoup de temps.
Cache côté client
Ce scénario est similaire au précédent, sauf que le client ne fait qu'une demande au serveur: donnez-moi toutes les données. À partir de là, il incombe au client de sauvegarder les données et de les utiliser de manière appropriée.
- Avantages: mise en œuvre facile du serveur, très rapide après le premier appel
- Inconvénients: le premier appel sera très lent, une implémentation plus compliquée côté client
Je ne sais pas quelle est la meilleure approche, ou si peut-être je manque la solution évidente. Tout avis serait grandement apprécié!