Documentation de demarches-simplifiees.fr
  • Généralités
  • Présentation
  • Cible
  • Démarrage
  • Cas d'usage
  • Tutoriels et vidéos
    • Tutoriel usager
    • Tutoriel « expert invité »
    • Tutoriel instructeur
    • Tutoriel administrateur
    • Les bonnes pratiques lors de la création d'une démarche
    • Vidéo : la sécurité de demarches-simplifiees.fr
    • Vidéo : le cadre juridique
    • Vidéo : la relation usager
    • Intégration du bouton « Mon avis »
  • Nouveautés
    • Pour les administrateurs
    • Pour les instructeurs
    • Pour les usagers
  • Expérimentations
    • Type de champ expression régulière
    • Chorus
  • Nos démarches
    • Démarches modèles à dupliquer
    • Démarches relatives au permis de conduire
    • Démarches relatives aux transporteurs
    • Démarches relatives au secteur du transport public de tourisme (T3P) - Taxis et VTC
    • Démarches relatives aux étrangers résidant en France
    • Démarches relatives aux inscriptions scolaires (inscription, restauration, centres de loisirs)
    • Démarches relatives aux médailles d'honneur
    • Démarches relatives aux Tribunal judiciaire de Lille
  • Conditions Générales d'Utilisation
  • Conditions générales d'utilisation : usagers
  • Politique de confidentialité
  • Mentions légales
  • API GraphQL
    • Automatisation : obligations des utilisateurs publics
    • Introduction technique
    • Accréditation
    • Le playground / Premiers pas
    • Point d'entrée et Schema GraphQL
    • Jeton d'authentification
      • Problèmes fréquents
    • Les queries
      • getDemarche
      • getDossier
      • getGroupeInstructeur
      • getDemarcheDescriptor
    • Les mutations
      • Modifier l'état d'un dossier
      • Envoyer un message
      • Ajouter ou supprimer un label
    • Pagination
    • Gestion des Erreurs
    • Cas d'usages / exemple d'implémentation
      • Client de démo en JS
      • Autentification
      • Récupérer un dossier
      • Pagination – Synchroniser une démarche à faible volumétrie (polling simple)
      • Pagination – Récupérer tous les dossiers d'une démarche
      • Pagination – Synchroniser une démarche à forte volumétrie (synchronisation)
      • Télécharger les fichiers uploadés par un usager sur son dossier
      • Envoyer un message avec une PJ
      • Accepter un dossier et y joindre un justificatif (une PJ)
      • Lister les Id des instructeurs
  • Pour aller plus loin
    • Cartographie
    • API de préremplissage
    • Aspects techniques et juridiques
    • Exports de données
    • Exports et Macros
    • Routage des dossiers
    • Webinaires
    • Horodatage
    • Archivage longue durée des démarches
    • Le conditionnel
    • Eligibilité des dossiers
    • Export personnalisé
  • Communiqués de presse
  • Expiration et suppression des dossiers
Propulsé par GitBook
Sur cette page
  • Application concrète
  • Première requete
  • Deuxième requête, et toutes autres :
Exporter en PDF
  1. API GraphQL

Pagination

Basée sur un système de curseur

PrécédentAjouter ou supprimer un labelSuivantGestion des Erreurs

Dernière mise à jour il y a 1 an

La pagination sur l’API GraphQL se fait par « curseur ». Nous vous renvoyons à la définition faite par Microsoft d'un curseur :

Le curseur est ainsi nommé car il indique la position active dans le jeu de résultats, à l'instar du curseur de l'écran de votre ordinateur.

Concrètement, nous suivons la spec relay : . Pour récupérer la prochaine page il faut passer à l’API le « curseur » de la fin de la page précédente.

Application concrète

Première requete

Voici un exemple. On commence par faire une query pour récupérer les 100 premiers dossiers :

query getDemarche($demarcheNumber: Int!, $after: String) {
  demarche(number: $demarcheNumber) {
    dossiers(first: 100, after: $after) {
      pageInfo {
        endCursor
        hasNextPage
      }
      nodes {
        id
        number
      }
    }
  }
}
{
  "query": <query>,
  "operationName": "getDemarche",
  "variables": {
    "demarcheNumber": 1234
  }
}

Dans le résultat obtenu il faut lire la valeur du « curseur » dans le champ demarche.dossiers.pageInfo.endCursor .

Deuxième requête, et toutes autres :

On peut passer alors ce « curseur » comme argument after dans la prochaine query. Et ainsi de suite jusqu’à ce que le champ demarche.dossiers.pageInfo.hasNextPage soit égal à false.

query getDemarche($demarcheNumber: Int!, $after: String) {
  demarche(number: $demarcheNumber) {
    dossiers(first: 100, after: $after) {
      pageInfo {
        endCursor
        hasNextPage
      }
      nodes {
        id
        number
      }
    }
  }
}
{
  "query": <query>,
  "operationName": "getDemarche",
  "variables": {
    "demarcheNumber": 1234,
    "after" "abc"
  }
}

Pour un exemple d'implementation, rendez-vous sur :

https://learn.microsoft.com/fr-fr/office/client-developer/access/desktop-database-reference/what-is-a-cursor
https://relay.dev/graphql/connections.htm
Pagination – Récupérer tous les dossiers d'une démarche