Les applications peuvent interagir avec l'API Universal Ledger à l'aide de gRPC et de Python. Cette approche implique la génération et l'utilisation de 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 Google Cloud projet avec l'API Universal Ledger activée.
Un rôle IAM tel que
universalledger.googleapis.com/endpointViewerpour pouvoir au moins afficher les points de terminaison Universal Ledger.Des 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 d'intégration à la version bêta privée.
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 contenir 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 la gestion de l'authentification. Google Cloudgoogleapis-common-protos: messages de tampon de protocole courants utilisés dans les API Google.grpcio: bibliothèque gRPC pour Python.requests: nécessaire à certaines dépendances pour envoyer des requêtes HTTP.
Générer les bibliothèques de tampon 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 explique comment télécharger ces fichiers .proto à partir du dépôt googleapis et utiliser les grpcio-tools installés 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 tampon 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.protoCela devrait créer plusieurs fichiers 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 Google Cloud projet, par exemplemy-project.REGION: région où se trouve votre point de terminaison Universal Ledger, par exempleus-east5. Google Cloud
"""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
API_ENDPOINT = "universalledger.googleapis.com"
PROJECT = "PROJECT_ID"
REGION = "REGION"
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 l'interface système doit confirmer que l'environnement virtuel est actif (par exemple, il est précédé du préfixe
(example_client)).Exécutez le script Python :
python3 endpoints.py
Vous devriez voir une sortie semblable à celle-ci :
Found the following endpoints:
- projects/my-project/locations/us-east5/endpoint/gcul-pilot-testing
- projects/my-project/locations/us-east5/endpoint/gcul-user-testing
Étape suivante
- Consultez toutes les méthodes de l'API Universal Ledger.
- Découvrez la compatibilité gRPC dans d'autres langages.
- Explorez les définitions de tampon de protocole de l'API Universal Ledger.