Certains services renvoient des listes d'éléments potentiellement volumineuses, comme des lignes ou des descriptions de ressources. Pour contrôler l'utilisation du processeur et de la mémoire, les services renvoient ces ressources dans pages : des sous-ensembles plus petits d'éléments avec un jeton de continuation pour demander le sous-ensemble suivant.
Il peut être fastidieux d'itérer sur les éléments par page. Les bibliothèques clientes fournissent des adaptateurs pour convertir les pages en itérateurs asynchrones. Ce guide vous explique comment utiliser ces adaptateurs.
Prérequis
Ce guide utilise le service Secret Manager pour illustrer les opérations de liste. Les concepts inclus dans ce guide s'appliquent également à d'autres services.
Pour suivre ce guide, vous devez avoir activé le service Secret Manager, vous être connecté et vous assurer que votre compte dispose des autorisations nécessaires. Pour savoir comment remplir ces conditions préalables, suivez le guide de démarrage rapide du service.
Pour obtenir des instructions de configuration complètes pour les bibliothèques Rust, consultez Configurer votre environnement de développement.
Dépendances
Ajoutez la bibliothèque Secret Manager à votre fichier Cargo.toml :
cargo add google-cloud-secretmanager-v1
Itérer des méthodes de liste
Pour faciliter l'itération des éléments d'une méthode de liste, les API renvoient une implémentation du trait ItemPaginator. Introduisez le trait dans le champ d'application à l'aide d'une déclaration use :
Pour itérer sur les éléments, utilisez la méthode by_item.
Dans de rares cas, les pages peuvent contenir des informations supplémentaires auxquelles vous devez accéder, ou vous devrez peut-être vérifier votre progression dans les processus. Si nécessaire, vous pouvez itérer sur des pages entières au lieu d'éléments individuels.
Introduisez
Paginatordans le champ d'application à l'aide d'une déclarationuse:Itérez sur les pages à l'aide de
by_page:
Travailler avec futures::Stream
Vous pouvez utiliser ces API dans l'écosystème Rust plus vaste des flux asynchrones, tels que tokio::Stream. Pour ce faire :
Activez la fonctionnalité
unstable-streamsdans le crategoogle_cloud_gax. Le nom de cette fonctionnalité indique que ces API sont instables. Vous ne devez les utiliser que si vous êtes prêt à gérer les problèmes résultant de modifications incompatibles apportées au traitfutures::Stream.cargo add google-cloud-gax --features unstable-streamLes exemples suivants utilisent également le trait
futures::stream::StreamExt, que vous activez en ajoutant le cratefutures.cargo add futuresAjoutez les déclarations
userequises :Utilisez la fonction
into_streampour convertirItemPaginatorenfutures::Stream.
De même, vous pouvez utiliser la fonction into_stream pour convertir Paginator en futures::Stream.
Reprendre les méthodes de liste en définissant le jeton de page suivante
Dans certains cas, comme une opération de liste interrompue, vous pouvez définir le jeton de page suivante pour reprendre la pagination à partir d'une page spécifique.
Quand utiliser les helpers de pagination
Les bibliothèques clientes Google Cloud pour Rust fournissent un adaptateur permettant de convertir les RPC de liste tels que définis par AIP-4233 en types implémentant ItemPaginator et Paginator si la méthode Google API List suit les consignes de pagination définies par AIP-158. En bref, ce guide exige que chaque appel à une méthode List renvoie une page d'éléments de ressources (par exemple, des secrets) ainsi qu'un jeton que vous pouvez transmettre à la méthode List pour récupérer la page suivante.
La plupart des services Google Cloud suivent ces consignes. Dans le cas contraire, vous devez implémenter votre propre adaptateur pour parcourir les résultats.