J'ai une grosse demande d'API qui me donne environ 1 000 résultats. Comme cette demande est trop grande, je dois diviser en plusieurs parties de réponse, donc c'est plus rapide. Je voudrais interroger les 1000 résultats, mais diffusez les données comme cela arrive avec le côté client
Dans la demande d'API, vous n'êtes pas autorisé à mettre un paramètre, vous récupérez donc la quantité totale de messages. La réponse est un JSON essentiellement le même que Wordpress (mais ce n'est pas Wordpress)
J'ai essayé la même requête de 10 à 10 résultats, mais je dois faire plusieurs requêtes pour obtenir le comportement attendu.
Ce que j'aimerais obtenir est une requête de 1000 résultats.
fetch(api) .then((data) => ...) .then((data) => { //When loaded first 10 records show //When loaded next 10 records show ... // Until the 1000 })
Est-ce que je pourrais y parvenir d'une manière ou d'une autre?
3 Réponses :
Il existe plusieurs façons dont un backend peut implémenter le streaming / pagination, et la réponse JS dépend de la manière dont le backend que vous interrogez prend en charge.
Parce que vous avez mentionné que vous interrogez Wordpress dans votre commentaire, je vais vous donner un exemple pour Wordpress ici, mais d'autres API peuvent avoir différentes façons de gérer le streaming / la pagination.
Le L'API WordPress prend en charge la pagination, comme indiqué ici:
https://developer.wordpress.org/rest-api/using-the-rest-api/pagination/
Ce que vous devrez faire est de demander spécifiquement une page avec un décalage pour obtenir cette partie des résultats, comme ceci:
/wp/v2/posts?per_page=100&offset=1000
Cela obtiendra la liste des articles après le post # 1000, où chaque page a 100 résultats. p>
Pour les autres API, vous devrez nous donner plus de détails afin de déterminer comment diffuser les résultats.
Ici, le problème est que vous devez demander à chaque fois que vous voulez une nouvelle page. Ce que j'aimerais avoir, c'est juste une demande, / wp / v2 / posts et le streaming des données qui arrivent (L'API n'est pas Wordpress, c'était juste un exemple)
Vous devez spécifier spécifiquement ce qu'est l'API, car la réponse dépend entièrement de la manière dont le backend fournit les données. Il n'existe pas de solution JS générique pour diffuser des données à partir d'un point de terminaison qui ne prend pas en charge le streaming. Si vous pouvez donner des détails sur le backend que vous utilisez, nous pouvons vous fournir des exemples sur la façon de le configurer pour pousser les résultats vers un frontend en temps réel.
J'ai édité la question pour qu'elle soit mieux clarifiée. Les données sont dans une réponse JSON, la requête n'autorise aucun paramètre à partitionner
Bien, mais nous devons savoir ce qu'est l'API pour savoir si elle prend en charge le streaming, cela ne peut pas être résolu avec juste JS, nous devons savoir comment fonctionne le backend.
Il est très important de savoir comment vous obtenez vos résultats. Par exemple, si vous utilisez le streaming, les données arrivent simultanément et vous n'aurez pas à faire face à ce genre de problèmes.
Vous pouvez consulter les liens ci-dessous pour le streaming de données back-end.
Le protocole WebSocket permet une interaction entre un client Web (tel qu'un navigateur) et un serveur Web avec des frais généraux réduits, facilitant le transfert de données en temps réel depuis et vers le serveur
Enfin, ce que j'ai fait est récupéré avec de nombreuses requêtes de pages différentes, étant la datatable mise à jour progressivement avec les nouveaux enregistrements de la nouvelle requête
Vous avez besoin que votre serveur prenne en charge le streaming de données - le client ne peut pas forcer le serveur à fractionner la réponse
Il est très important de savoir comment vous acquérez vos résultats. Par exemple, si vous utilisez le streaming, les données arrivent simultanément et que vous n'aurez pas à gérer ce type de problèmes. D'où vient vos données?
Salut @Simonare C'est du côté client et cela vient d'une API, donc les données sont dans un autre serveur. L'exemple serait, j'ai un blog avec 1000 articles dans Wordpress, mais j'ai une page faite avec HTML, CSS, JS et j'ai besoin de récupérer ces articles en streaming les données.
Salut @MatthewHerbst donc probablement la meilleure affaire est de faire plusieurs requêtes pour récupérer ces données, n'est-ce pas?
@RandyRandalf si le serveur prend en charge cela, alors oui, c'est certainement le moyen le plus simple
@RandyRandalf parce que la réponse dépend beaucoup du type de pagination pris en charge par l'API Wordpress et pas seulement du fonctionnement de JS, j'ai ajouté la balise Wordpress et modifié votre titre afin que vous obteniez des réponses plus utiles.
Je suis prêt à parier qu'il n'y a aucun problème avec l'appel pour obtenir 1000 objets. Je parie que le problème est d'écrire 1000 éléments à la fois. À moins que cet appel backend ne prenne beaucoup de temps, il ne s'agit probablement que d'un problème côté client.