# So funktioniert die Paginierung Erfahren Sie, wie Sie Ergebnisse für Listen- und Such-Endpoints paginieren. Weitere Informationen zur Paginiertung mit Video-Tutorials finden Sie in [dieser Playlist](https://www.youtube.com/playlist?list=PLy1nL-pvL2M7AvG4xrF6gmbSUW2FBUl9p). Die Stripe-API verfügt über Listen- und Such-Endpoints, die mehrere Objekte zurückgeben können, z. B. die Auflistung von Kundinnen/Kunden oder die Suche nach PaymentIntents. Um negative Auswirkungen auf die Leistung zu minimieren, geben diese Endpoints nicht alle Ergebnisse auf einmal zurück. Stattdessen gibt Stripe eine Seite mit Ergebnissen pro API-Aufruf zurück, wobei jede Seite standardmäßig bis zu 10 Ergebnisse enthält. Verwenden Sie den [limit](https://docs.stripe.com/api/pagination.md#pagination-limit)-Parameter, um die Anzahl der Ergebnisse pro Seite zu ändern. Dies ist beispielsweise eine API-Anfrage zum Auflisten von Kundinnen/Kunden mit einem `limit`-Wert von 3: ```curl curl -G https://api.stripe.com/v1/customers \ -u "<>:" \ -d limit=3 ``` Die Antwort von Stripe enthält eine Seite mit 3 Ergebnissen: ```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, /* ... */ } ``` Beachten Sie bei der Verwendung dieser Endpoints Folgendes: - Objekte befinden sich innerhalb der `data`-Eigenschaft. - Die Objekte befinden sich in umgekehrter chronologischer Reihenfolge, d. h. das zuletzt erstellte Objekt ist das erste. - Die Eigenschaft `has_more` gibt an, ob es zusätzliche Objekte gibt, die in dieser Anforderung nicht zurückgegeben wurden. Anstatt das `data`-Array in einer Schleife zu durchlaufen, um die Objekte zu durchsuchen, sollten Sie die Ergebnisse paginieren. Dadurch wird verhindert, dass Sie einige Objekte übersehen, wenn der [has_more](https://docs.stripe.com/api/pagination.md#pagination-has_more)-Parameter `true` ist. ## Automatische Paginierung Um alle Objekte abzurufen, verwenden Sie die Funktion für die automatische Paginierung. Dadurch werden automatisch mehrere API-Aufrufe getätigt, bis `has_more` `false` wird. #### Ruby ```ruby customers = Stripe::Customer.list() customers.auto_paging_each do |customer| # Do something with customer end ``` > Wenn Sie die automatische Paginierung mit einem Listen-Endpoint und der Einstellung [ending_before](https://docs.stripe.com/api/pagination.md#pagination-ending_before) verwenden, sind die Ergebnisse in chronologischer Reihenfolge, d. h. der/die zuletzt erstellte Kunde/Kundin ist der/die letzte. ## Manuelle Paginierung Befolgen Sie diese Schritte, um die Ergebnisse manuell zu paginieren. Dieser Prozess ist unterschiedlich, je nachdem, ob Sie einen Listen-Endpoint oder einen Such-Endpoint aufrufen. #### Liste 1. Führen Sie einen API-Aufruf durch, um die gesuchten Objekte aufzulisten. ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" ``` 1. Überprüfen Sie in der Antwort den Wert von [has_more](https://docs.stripe.com/api/pagination.md#pagination-has_more): - Wenn der Wert `false` ist, haben Sie alle Objekte abgerufen. - Wenn der Wert `true` ist, rufen Sie die ID des letzten zurückgegebenen Objekts ab, und führen Sie einen neuen API-Aufruf mit dem festgelegte Parameter [starting_after](https://docs.stripe.com/api/pagination.md#pagination-starting_after) durch. Wiederholen Sie diesen Schritt, bis Sie alle Objekte abgerufen haben, die Sie suchen möchten. ```curl curl -G https://api.stripe.com/v1/customers \ -u "<>:" \ -d starting_after={{LAST_CUSTOMER_ID}} ``` #### Suchen 1. Führen Sie einen API-Aufruf durch, um die gesuchten Objekte aufzulisten. ```curl curl -G https://api.stripe.com/v1/customers/search \ -u "<>:" \ --data-urlencode "query=metadata['foo']:'bar'" ``` 1. Überprüfen Sie in der Antwort den Wert von [has_more](https://docs.stripe.com/api/pagination/search.md#search_pagination-has_more): - Wenn der Wert `false` ist, haben Sie alle Objekte abgerufen. - Wenn der Wert `true` ist, rufen Sie die Eigenschaft `next_page` aus der Antwort ab und führen Sie einen neuen API-Aufruf mit dem festgelegten Parameter [page](https://docs.stripe.com/api/pagination/search.md#search_pagination-page) durch. Wiederholen Sie diesen Schritt, bis Sie alle Objekte abgerufen haben, die Sie suchen möchten. ```curl curl -G https://api.stripe.com/v1/customers/search \ -u "<>:" \ --data-urlencode "query=metadata['foo']:'bar'" \ -d page={{NEXT_PAGE_ID}} ```