L'API de la pagination des meilleures pratiques

J'aimerais quelques uns aider à la manipulation d'un étrange cas de bord avec un paginé de l'API, je suis en train de construire.

Comme beaucoup d'Api, celui-ci est paginé de grands résultats. Si vous interrogez /foos, vous obtiendrez 100 résultats (c'est à dire foo #1 à 100), et un lien vers /foos?page=2 qui devrait revenir foo #101-200.

Malheureusement, si foo #10 est supprimé de la base de données avant de l'API de consommation, la prochaine requête /foos?page=2 seront compensés par 100 et retour foos #102-201.

C'est un problème pour les API les consommateurs qui tentent de tirer tous les foos - ils ne recevront pas de foo #101.

Quelle est la meilleure pratique pour gérer cela? Nous tenons à le rendre aussi léger que possible (c'est à dire en évitant les séances de traitement pour les demandes d'API). Des exemples provenant d'autres Api serait grandement apprécié!

  • quel est le problème ici? semble ok pour moi, de toute façon utilisateur obtient 100 points.
  • Juste édité la question - problème est que foo #101 n'apparaîtront pas dans les résultats & une API de consommation d'essayer de tirer toutes les foos va manquer un.
  • J'ai été confronté à ce même problème et à la recherche d'une solution. Autant que je sache, il n'y a vraiment pas de solides garanties mécanisme pour ce faire, si chaque page exécute une nouvelle requête. La seule solution je pense est de garder une session active, et de garder le jeu de résultats dans le côté serveur, et plutôt que de l'exécution de requêtes pour chaque page, il suffit de prendre la prochaine mise en cache du jeu d'enregistrements.
  • Oh, je viens de voir la partie de votre question où vous voulez éviter ce scénario
  • Jetez un oeil à la façon dont twitter atteindre ce dev.twitter.com/rest/public/timelines
  • Comment est la since_id paramètre de mise à jour ? Dans le twitter page web, il semble qu'ils sont à la fois des demandes avec la même valeur pour since_id . Je me demande quand sera mis à jour de sorte que si de nouveaux tweets sont ajoutés, ils peuvent être pris en compte ?
  • Le since_id paramètre doit être mis à jour par le consommateur de l'API. Si vous le voyez, l'exemple, il se réfère à des clients traitement des tweets

InformationsquelleAutor 2arrs2ells | 2012-12-14