Certains services renvoient des listes d'éléments potentiellement volumineuses, telles que des lignes ou des descriptions de ressources. Pour maîtriser l'utilisation du processeur et de la mémoire, les services renvoient ces ressources dans des pages : des sous-ensembles plus petits d'éléments avec un jeton de continuation pour demander le sous-ensemble suivant.
Parcourir les éléments par page peut être fastidieux. 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 répondre à ces prérequis, suivez le démarrage rapide du service.
Pour obtenir des instructions de configuration complètes pour les bibliothèques Rust, consultez la page 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ération des méthodes de liste
Pour faciliter l'itération des éléments dans 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 parcourir 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 entre les processus. Si nécessaire, vous pouvez parcourir des pages entières au lieu d'éléments individuels.
Introduisez
Paginatordans le champ d'application à l'aide d'une déclarationuse:Parcourez les pages à l'aide de
by_page:
Utiliser futures::Stream
Vous pouvez utiliser ces API dans l'écosystème Rust plus vaste de flux asynchrones, tels que tokio::Stream. Pour ce faire, procédez comme suit :
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 interruptions résultant de modifications incompatibles dufutures::Streamtrait.cargo add google-cloud-gax --features unstable-streamLes exemples suivants utilisent également le
futures::stream::StreamExttrait, que vous activez en ajoutant lefuturescrate.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 assistants de pagination
Google Cloud Les bibliothèques clientes 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 de liste de l'API Google suit les consignes de pagination
définies par AIP-158. En bref, cette consigne exige que chaque appel à une méthode List renvoie une page d'éléments de ressource (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 Google Cloud services suivent ces consignes. Dans le cas contraire, vous devez implémenter votre propre adaptateur pour parcourir les résultats.