Le applicazioni possono interagire con l'API Universal Ledger utilizzando gRPC e Python. Questo approccio prevede la generazione e l'utilizzo di librerie client Python compilate a partire dalle definizioni dei buffer di protocollo del servizio.
Questo tutorial mostra agli sviluppatori che vogliono implementare un client per l'API Universal Ledger come configurare un ambiente di sviluppo adatto, generare le librerie necessarie ed effettuare una chiamata gRPC utilizzando Python.
Prima di iniziare
Per completare questo tutorial, avrai bisogno di:
Un progetto Google Cloud con l'API Universal Ledger abilitata.
Un ruolo IAM come
universalledger.googleapis.com/endpointViewerper poter almeno visualizzare gli endpoint di Universal Ledger.Credenziali di autenticazione locale per il tuo account utente. Esegui il comando seguente per configurare queste credenziali:
gcloud auth application-default login
Per saperne di più su questi passaggi, consulta la guida Onboarding della versione di anteprima privata.
Configura l'ambiente
Le istruzioni di questo tutorial sono scritte per un ambiente che esegue Ubuntu 25.04, che include Python 3.13 per impostazione predefinita. Potresti dover modificare i comandi se utilizzi un sistema operativo diverso.
Per configurare l'ambiente di sviluppo, completa i seguenti passaggi. Questi
passaggi ti guidano nell'installazione degli strumenti a riga di comando necessari. Ciò include
l'utilizzo di pipx per installare grpcio-tools, che viene utilizzato per creare i binding gRPC. Per isolare le dipendenze Python per questo progetto, creerai e attiverai anche un ambiente virtuale Python e installerai le librerie Python richieste utilizzando pip.
Installa le dipendenze di base utilizzando i comandi:
sudo apt updatesudo apt install git pipx python3.13-venvUtilizza
pipxper installare l'applicazione degli strumenti gRPC e assicurati che la directory dei file binari venga aggiunta aPATH:pipx install grpcio-toolspipx ensurepathChiudi e riapri il terminale per completare l'attivazione di
pipx.Crea una directory principale in cui inserire i file di questo tutorial.
mkdir gcul_tutorialcd gcul_tutorialSe non diversamente specificato, i comandi rimanenti devono essere eseguiti all'interno di questa nuova directory.
Crea un ambiente virtuale Python e installa le librerie rimanenti:
python3 -m venv example_clientcd example_clientsource ./bin/activatepip3 install google-auth googleapis-common-protos grpcio requestscd ..Queste librerie sono:
google-auth: per la gestione dell' Google Cloud autenticazione.googleapis-common-protos: messaggi buffer di protocollo comuni utilizzati in tutte le API di Google.grpcio: la libreria gRPC per Python.requests: necessario per alcune dipendenze per inviare richieste HTTP.
Genera le librerie Protocol Buffer
Per interagire con l'API Universal Ledger utilizzando gRPC, l'applicazione Python ha bisogno di librerie client compilate dalle definizioni di Protocol Buffer (.proto) del servizio. Queste definizioni specificano i servizi, i metodi e i tipi di messaggi dell'API.
Questa sezione mostra come scaricare questi file .proto dal repository googleapis e utilizzare grpcio-tools installato per generare il codice sorgente Python necessario.
Clona il repository GitHub googleapis in cui vengono pubblicate le definizioni di Protocol Buffer per le API di Google.
git clone https://github.com/googleapis/googleapis.gitCrea le definizioni di Protocol Buffer e i binding gRPC per 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.protoIn questo modo dovrebbero essere creati diversi file nella directory
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
Chiama l'API Universal Ledger
Infine, crea uno script Python per chiamare l'API Universal Ledger utilizzando le librerie generate. Salva il seguente codice come example_client/endpoints.py.
Nel codice, sostituisci i seguenti valori segnaposto:
PROJECT_ID: il tuo ID progetto Google Cloud , ad esempiomy-project.REGION: la regione Google Cloud in cui si trova l'endpoint Universal Ledger, ad esempious-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
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())
Per eseguire lo script, vai alla directory example_client.
L'ambiente virtuale dovrebbe essere ancora attivo dai passaggi di configurazione.
Passa alla directory dello script:
cd example_clientIl prompt della shell dovrebbe confermare che l'ambiente virtuale è attivo (ad esempio, è preceduto da
(example_client)).Esegui lo script Python:
python3 endpoints.py
Dovresti visualizzare un output simile al seguente:
Found the following endpoints:
- projects/my-project/locations/us-east5/endpoint/gcul-pilot-testing
- projects/my-project/locations/us-east5/endpoint/gcul-user-testing
Passaggi successivi
- Consulta tutti i metodi dell'API Universal Ledger.
- Scopri di più sul supporto di gRPC in altre lingue.
- Esplora le definizioni del buffer di protocollo dell'API Universal Ledger.