Certains services renvoient des listes d'éléments potentiellement volumineuses, telles que 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 des pages : des sous-ensembles plus petits d'éléments avec un jeton de continuation pour demander le sous-ensemble suivant.
L'itération sur les éléments par page peut être fastidieuse. 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 être assuré 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 les 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 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 créer un point de contrôle de votre progression dans les processus. Si nécessaire, vous pouvez effectuer une itération sur des pages complètes plutôt que sur des éléments individuels.
Introduisez
Paginatordans le champ d'application à l'aide d'une déclarationuse:Effectuez une itération sur 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, comme tokio::Stream. Pour ce faire, procédez comme suit :
Activez la fonctionnalité
unstable-streamsdans la caissegoogle_cloud_gax. Le nom de cette fonctionnalité sert d'avertissement quant à l'instabilité de ces API. Vous ne devez les utiliser que si vous êtes prêt à gérer les interruptions résultant de modifications incompatibles apportées au traitfutures::Stream.cargo add google-cloud-gax --features unstable-streamLes exemples suivants utilisent également la caractéristique
futures::stream::StreamExt, que vous activez en ajoutant la 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, par exemple lors d'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
Les bibliothèques clientes Google Cloud pour Rust fournissent un adaptateur permettant de convertir les RPC de liste 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, cette consigne 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. Si ce n'est pas le cas, vous devez implémenter votre propre adaptateur pour effectuer une itération sur les résultats.