Ressources · 86

Pagination d’API : terminer un export sans pertes ni doublons

Définir ordre, jetons, autorisations et reprise lorsque la collection change pendant sa lecture.

· 4 min

Ordinateur portable affichant du code sur un bureau Illustration · scène fictive

Ce que ce guide permet

  • Définir ordre et périmètre
  • Traiter le jeton comme une continuation
  • Détecter la fin selon le contrat
  • Reprendre après un échec
  • Rapprocher le résultat

Contrôle express

  • Une page vide signifie-t-elle la fin ?
  • Peut-on utiliser un curseur comme autorisation ?
  • Dédupliquer suffit-il pour éviter les pertes ?

Méthode pas à pas

  1. 01

    Définir ordre et périmètre

    Documentez filtre, ordre et clé de départage. Une date seule peut être insuffisante si plusieurs objets la partagent. Décidez si la collection reste vivante ou si l’export se rattache à un instantané. Ne promettez pas une vue figée si le fournisseur ne propose pas cette garantie.

    Livrable : contrat d’ordre et de cohérence.

  2. 02

    Traiter le jeton comme une continuation

    AIP-158 prévoit des jetons opaques et distingue pagination et autorisation : le jeton ne confère pas de droit d’accès. Vérifiez l’identité et les permissions à chaque requête. Conservez les paramètres de la lecture selon le contrat, et traitez expiration ou invalidation comme un état explicite.

    Livrable : cas de jeton valide, expiré et interdit.

  3. 03

    Détecter la fin selon le contrat

    Ne concluez pas à la fin parce qu’une page est plus courte que la taille demandée. Une API peut retourner moins d’éléments tout en fournissant une continuation. Selon AIP-158, un next_page_token vide indique la fin ; adaptez le client au contrat réel du fournisseur. Détectez aussi un jeton qui se répète sans progression.

    Livrable : tests de fin et de boucle.

  4. 04

    Reprendre après un échec

    Enregistrez la continuation après conservation durable du lot traité. Dédupliquez avec des identifiants stables et gardez l’état de reprise distinct du total affiché. Si l’instantané expire, recommencez ou rapprochez selon une politique explicite ; ne concaténez pas discrètement deux collections différentes.

    Livrable : point de reprise et scénario de panne.

  5. 05

    Rapprocher le résultat

    Comparez identifiants uniques, exclusions, états et éventuel total de référence à la même date. Testez création, modification et suppression pendant la lecture. Un compte d’objets correct ne prouve pas que ce sont les bons objets. Protégez fichiers et traces selon les données exportées.

    Livrable : manifeste d’export et écarts documentés.

Une lecture paginée qui peut reprendre

Pour un contrat de type AIP-158, la continuation détermine la suite. Une page courte ne prouve pas la fin.

  1. Fixer la lecture

    Conserver filtre, ordre, paramètres et identité autorisée.

  2. Conserver le lot

    Enregistrer durablement les objets et leurs identifiants.

  3. Suivre la continuation

    Un jeton présent conduit à la requête suivante avec les paramètres liés.

  4. Rapprocher à la fin

    À jeton final vide, vérifier exclusions, état de référence et couverture.

Exemple fictif : la connexion échoue après conservation d’un lot. La reprise utilise le point enregistré et contrôle les identifiants déjà traités.

Fiche de travail à réutiliser

À compléter avec vos observations autorisées. Ces champs constituent une trame de travail, pas des résultats observés.

ChampInformation à consigner
CollectionFiltres, ordre, clé de départage et garanties
ContinuationJeton, paramètres liés, expiration et fin
RepriseLot durable, identifiants uniques et point enregistré
RésultatManifeste, exclusions, date et écarts de rapprochement

Exemple d’application

Situation illustrative

Exemple fictif : un catalogue ajoute des produits pendant un export par offset. Une ligne se déplace entre deux pages.

Décision et preuve attendue

Le test repère une répétition et un produit absent ; l’équipe choisit un instantané proposé par l’API ou documente une lecture vivante avec rapprochement.

Distinguer les mécanismes

MécanismeUtilitéPoint de vigilance
OffsetAccéder à une position numériqueLes insertions peuvent déplacer les positions
CurseurContinuer une lecture selon un repèreNe garantit pas seul un instantané
InstantanéFixer un état de référenceVérifier durée de validité et coût

Indicateurs de pilotage

IndicateurCe qu’il mesurePremière action
Identifiants uniquesObjets distincts conservés dans l’exportComparer à une référence de même périmètre
ProgressionJetons et lots qui avancent réellementArrêter les boucles et investiguer
Couverture vérifiéeObjets rapprochés avec l’état de référenceNe pas confondre volume et exhaustivité

Erreurs fréquentes

  • Les insertions peuvent déplacer les positions
  • Ne garantit pas seul un instantané
  • Vérifier durée de validité et coût

Questions fréquentes

Une page vide signifie-t-elle la fin ?

Consultez le contrat et le jeton de continuation. La taille de page seule ne doit pas décider de la fin.

Peut-on utiliser un curseur comme autorisation ?

Non. Le serveur doit contrôler les droits de la requête indépendamment du jeton de pagination.

Dédupliquer suffit-il pour éviter les pertes ?

Non. Cela retire les répétitions mais ne récupère pas les objets jamais lus. Testez la stabilité de l’ordre et les changements de collection.

Références officielles

Date de consultation des références : . La méthode et la fiche de travail proposent des contrôles à adapter à votre contexte ; elles ne constituent pas une certification.