# Fonctionnement de la pagination Découvrez comment paginer les résultats des endpoints de liste et de recherche. Pour en savoir plus sur la pagination avec des tutoriels vidéo, consultez [cette playlist](https://www.youtube.com/playlist?list=PLy1nL-pvL2M7AvG4xrF6gmbSUW2FBUl9p). L’API Stripe comporte des endpoints de liste et de recherche qui peuvent renvoyer plusieurs objets, tels que la liste des clients ou la recherche de PaymentIntents. Pour atténuer les impacts négatifs sur les performances, ces endpoints ne renvoient pas tous les résultats en même temps. Stripe renvoie une page de résultats par appel à l’API, chaque page contenant jusqu’à 10 résultats par défaut. Utilisez le paramètre [limite](https://docs.stripe.com/api/pagination.md#pagination-limit) pour modifier le nombre de résultats par page. Par exemple, il s’agit d’une requête d’API pour répertorier les clients, avec une valeur `limit` de 3 : ```curl curl -G https://api.stripe.com/v1/customers \ -u "<>:" \ -d limit=3 ``` La réponse de Stripe contient une page avec 3 résultats : ```json { "data": [ { "id": "cus_005", "object": "customer", "name": "John Doe", }, { "id": "cus_004", "object": "customer", "name": "Jane Doe", }, { "id": "cus_003", "object": "customer", "name": "Jenny Rosen", }, ], "has_more": true, /* ... */ } ``` Gardez à l’esprit les détails suivants lorsque vous utilisez ces endpoints : - Les objets se trouvent dans la propriété `data`. - Les objets sont dans l’ordre chronologique inverse, ce qui signifie que l’objet le plus récent apparaît en premier. - La propriété `has_more` indique si d’autres objets n’ont pas été renvoyés dans cette requête. Au lieu de parcourir le tableau pour passer en revue les objets `data`, vous pouvez paginer les résultats. Cela vous permet d’éviter d’omettre certains objets lorsque le [paramètre has_more](https://docs.stripe.com/api/pagination.md#pagination-has_more) est défini sur `true`. ## Autopagination Pour récupérer tous les objets, utilisez la fonction de pagination automatique. Celle-ci effectue automatiquement plusieurs appels à l’API jusqu’à ce que le paramètre `has_more` devienne `false`. #### Ruby ```ruby customers = Stripe::Customer.list() customers.auto_paging_each do |customer| # Do something with customer end ``` > Lorsque vous utilisez la pagination automatique avec un endpoint de liste et définissez le paramètre sur [ending_before](https://docs.stripe.com/api/pagination.md#pagination-ending_before), les résultats sont présentés dans l’ordre chronologique, ce qui signifie que le client le plus récemment créé figure en dernier. ## Pagination manuelle Suivez ces étapes pour paginer manuellement les résultats. Ce processus est différent selon que vous appelez un endpoint de liste ou un endpoint de recherche. #### Liste 1. Effectuez un appel à l’API pour lister les objets que vous souhaitez trouver. ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" ``` 1. Dans la réponse, vérifiez la valeur de [has_more](https://docs.stripe.com/api/pagination.md#pagination-has_more) : - Si la valeur est `false`, vous avez récupéré tous les objets. - Si la valeur est `true`, récupérez l’ID du dernier objet renvoyé et effectuez un nouvel appel à l’API avec le paramètre défini sur [starting_after](https://docs.stripe.com/api/pagination.md#pagination-starting_after). Répétez cette étape jusqu’à ce que vous ayez récupéré tous les objets que vous souhaitez trouver. ```curl curl -G https://api.stripe.com/v1/customers \ -u "<>:" \ -d starting_after={{LAST_CUSTOMER_ID}} ``` #### Rechercher 1. Effectuez un appel à l’API pour lister les objets que vous souhaitez trouver. ```curl curl -G https://api.stripe.com/v1/customers/search \ -u "<>:" \ --data-urlencode "query=metadata['foo']:'bar'" ``` 1. Dans la réponse, vérifiez la valeur de [has_more](https://docs.stripe.com/api/pagination/search.md#search_pagination-has_more) : - Si la valeur est `false`, vous avez récupéré tous les objets. - Si la valeur est `true`, récupérez la propriété `next_page` de la réponse et effectuez un nouvel appel à l’API avec le paramètre défini sur [page](https://docs.stripe.com/api/pagination/search.md#search_pagination-page). Répétez cette étape jusqu’à ce que vous ayez récupéré tous les objets que vous souhaitez trouver. ```curl curl -G https://api.stripe.com/v1/customers/search \ -u "<>:" \ --data-urlencode "query=metadata['foo']:'bar'" \ -d page={{NEXT_PAGE_ID}} ```