Les applications peuvent interagir avec l'API Universal Ledger à l'aide de gRPC et de Python. Cette approche implique de générer et d'utiliser des bibliothèques clientes Python compilées à partir des définitions de tampon de protocole du service.
Ce tutoriel explique aux développeurs qui souhaitent implémenter un client pour l'API Universal Ledger comment configurer un environnement de développement approprié, générer les bibliothèques nécessaires et effectuer un appel gRPC à l'aide de Python.
Avant de commencer
Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :
Un projet Google Cloud avec l'API Universal Ledger activée.
Un rôle IAM tel que
universalledger.googleapis.com/endpointViewerpour que vous puissiez au moins afficher les points de terminaison Universal Ledger.Identifiants d'authentification locaux pour votre compte utilisateur. Exécutez la commande suivante pour configurer ces identifiants :
gcloud auth application-default login
Pour en savoir plus sur ces étapes, consultez le guide de démarrage.
Configurer votre environnement
Les instructions de ce tutoriel sont écrites pour un environnement exécutant Ubuntu 25.04, qui inclut Python 3.13 par défaut. Vous devrez peut-être modifier les commandes si vous utilisez un autre système d'exploitation.
Pour configurer votre environnement de développement, procédez comme suit. Ces étapes vous guident dans l'installation des outils de ligne de commande nécessaires. Cela inclut l'utilisation de pipx pour installer grpcio-tools, qui permet de créer les liaisons gRPC. Pour isoler les dépendances Python de ce projet, vous allez également créer et activer un environnement virtuel Python, puis y installer les bibliothèques Python requises à l'aide de pip.
Installez les dépendances de base à l'aide des commandes suivantes :
sudo apt updatesudo apt install git pipx python3.13-venvUtilisez
pipxpour installer l'application d'outils gRPC et assurez-vous que son répertoire binaire est ajouté à votrePATH:pipx install grpcio-toolspipx ensurepathFermez et rouvrez votre terminal pour terminer l'activation de
pipx.Créez un répertoire parent pour stocker les fichiers de ce tutoriel.
mkdir gcul_tutorialcd gcul_tutorialSauf indication contraire, les commandes restantes doivent être exécutées à partir de ce nouveau répertoire.
Créez un environnement virtuel Python et installez les bibliothèques restantes :
python3 -m venv example_clientcd example_clientsource ./bin/activatepip3 install google-auth googleapis-common-protos grpcio requestscd ..Ces bibliothèques sont les suivantes :
google-auth: pour gérer l'authentification Google Cloud .googleapis-common-protos: messages de tampon de protocole courants utilisés dans les API Google.grpcio: bibliothèque gRPC pour Python.requests: requis par certaines dépendances pour envoyer des requêtes HTTP.
Générer les bibliothèques de tampons de protocole
Pour interagir avec l'API Universal Ledger à l'aide de gRPC, votre application Python a besoin de bibliothèques clientes compilées à partir des définitions de tampon de protocole (.proto) du service. Ces définitions spécifient les services, les méthodes et les types de messages de l'API.
Cette section vous explique comment télécharger ces fichiers .proto à partir du dépôt googleapis et utiliser le grpcio-tools installé pour générer le code source Python nécessaire.
Clonez le dépôt GitHub googleapis où sont publiées les définitions de tampons de protocole pour les API Google.
git clone https://github.com/googleapis/googleapis.gitCréez les définitions de tampon de protocole et les liaisons gRPC pour l'API Universal Ledger.
python-grpc-tools-protoc --proto_path=googleapis/ \ --python_out=example_client \ --pyi_out=example_client \ --grpc_python_out=example_client \ google/cloud/universalledger/v1/universalledger.protopython-grpc-tools-protoc --proto_path=googleapis/ \ --python_out=example_client \ --pyi_out=example_client \ google/cloud/universalledger/v1/query.protopython-grpc-tools-protoc --proto_path=googleapis/ \ --python_out=example_client \ --pyi_out=example_client \ google/cloud/universalledger/v1/accounts.protopython-grpc-tools-protoc --proto_path=googleapis/ \ --python_out=example_client \ --pyi_out=example_client \ google/cloud/universalledger/v1/common.protopython-grpc-tools-protoc --proto_path=googleapis/ \ --python_out=example_client \ --pyi_out=example_client \ google/cloud/universalledger/v1/transactions.protopython-grpc-tools-protoc --proto_path=googleapis/ \ --python_out=example_client \ --pyi_out=example_client \ google/cloud/universalledger/v1/types.protopython-grpc-tools-protoc --proto_path=googleapis/ \ --python_out=example_client \ --pyi_out=example_client \ google/cloud/universalledger/v1/status_event.protoPlusieurs fichiers devraient alors être créés dans le répertoire
example_client/google/cloud/universalledger/v1.accounts_pb2.py accounts_pb2.pyi common_pb2.py common_pb2.pyi query_pb2.py query_pb2.pyi status_event_pb2.py status_event_pb2.pyi transactions_pb2.py transactions_pb2.pyi types_pb2.py types_pb2.pyi universalledger_pb2.py universalledger_pb2.pyi universalledger_pb2_grpc.py
Appeler l'API Universal Ledger
Enfin, créez un script Python pour appeler l'API Universal Ledger à l'aide des bibliothèques générées. Enregistrez le code suivant sous le nom example_client/endpoints.py.
Dans le code, remplacez les valeurs d'espace réservé suivantes :
PROJECT_ID: ID de votre projet Google Cloud , par exemplemy-project.REGION: région Google Cloud où se trouve votre point de terminaison Universal Ledger, par exempleus-east5.
"""Example calling the Universal Ledger API."""
import sys
import google.auth
import google.auth.transport.grpc
import google.auth.transport.requests
from google.cloud.universalledger.v1 import universalledger_pb2
from google.cloud.universalledger.v1 import universalledger_pb2_grpc
import grpc
PROJECT = "PROJECT_ID"
REGION = "REGION"
API_ENDPOINT = f"universalledger.{REGION}.rep.googleapis.com"
SCOPES = ["https://www.googleapis.com/auth/cloud-platform"]
def main() -> str | None:
# Get the application default credentials.
credentials, _ = google.auth.default(scopes=SCOPES)
# Get an HTTP request function to refresh credentials.
refresh_request = google.auth.transport.requests.Request()
# Create a secure channel to the API endpoint.
with google.auth.transport.grpc.secure_authorized_channel(
credentials, refresh_request, API_ENDPOINT
) as channel:
# Create the client stub using the generated code.
stub = universalledger_pb2_grpc.UniversalLedgerStub(channel)
# Parent location for GCUL network endpoints.
parent = f"projects/{PROJECT}/locations/{REGION}"
# Build the request message.
request = universalledger_pb2.ListEndpointsRequest(parent=parent)
# Make the gRPC call.
try:
metadata = [("x-goog-request-params", f"parent={parent}")]
response = stub.ListEndpoints(request, metadata=metadata)
except grpc.RpcError as exc:
return f"{exc.code().name}: {exc.details()}"
if not response.endpoints:
return f"No endpoints found under: {parent}"
print("Found the following endpoints:")
for endpoint in response.endpoints:
print("-", endpoint.name)
if __name__ == "__main__":
sys.exit(main())
Pour exécuter le script, accédez au répertoire example_client.
L'environnement virtuel doit toujours être actif depuis les étapes de configuration.
Accédez au répertoire du script :
cd example_clientL'invite de votre shell doit confirmer que l'environnement virtuel est actif (par exemple, elle est précédée de
(example_client)).Exécutez le script Python :
python3 endpoints.py
Un résultat semblable aux lignes suivantes doit s'afficher :
Found the following endpoints:
- projects/my-project/locations/us-east5/endpoint/gcul-pilot-testing
- projects/my-project/locations/us-east5/endpoint/gcul-user-testing
Étapes suivantes
- Consultez toutes les méthodes de l'API Universal Ledger.
- En savoir plus sur la compatibilité de gRPC avec d'autres langages
- Explorez les définitions de tampon de protocole de l'API Universal Ledger.