Aplikasi dapat berinteraksi dengan Universal Ledger API menggunakan gRPC dan Python. Pendekatan ini melibatkan pembuatan dan penggunaan library klien Python yang dikompilasi dari definisi protocol buffer layanan.
Tutorial ini menunjukkan kepada developer yang ingin menerapkan klien untuk Universal Ledger API cara menyiapkan lingkungan pengembangan yang sesuai, membuat library yang diperlukan, dan melakukan panggilan gRPC menggunakan Python.
Sebelum memulai
Untuk menyelesaikan tutorial ini, Anda memerlukan:
Project Google Cloud dengan Universal Ledger API diaktifkan.
Peran IAM seperti
universalledger.googleapis.com/endpointViewersehingga Anda setidaknya dapat melihat endpoint Universal Ledger.Kredensial autentikasi lokal untuk akun pengguna Anda. Jalankan perintah berikut untuk mengonfigurasi kredensial ini:
gcloud auth application-default login
Untuk mempelajari langkah-langkah ini lebih lanjut, lihat panduan Orientasi pratinjau pribadi.
Menyiapkan lingkungan Anda
Petunjuk dalam tutorial ini ditulis untuk lingkungan yang menjalankan Ubuntu 25.04, yang menyertakan Python 3.13 secara default. Anda mungkin perlu mengubah perintah jika menggunakan sistem operasi yang berbeda.
Untuk menyiapkan lingkungan pengembangan, selesaikan langkah-langkah berikut. Langkah-langkah ini akan memandu Anda menginstal alat command line yang diperlukan. Hal ini mencakup
penggunaan pipx untuk menginstal grpcio-tools, yang digunakan untuk membuat binding gRPC. Untuk mengisolasi dependensi Python untuk project ini, Anda juga akan
membuat dan mengaktifkan lingkungan virtual Python, lalu menginstal
library Python yang diperlukan ke dalamnya menggunakan pip.
Instal dependensi dasar menggunakan perintah:
sudo apt updatesudo apt install git pipx python3.13-venvGunakan
pipxuntuk menginstal aplikasi alat gRPC dan pastikan direktori binernya ditambahkan kePATHAnda:pipx install grpcio-toolspipx ensurepathTutup dan buka kembali terminal Anda untuk menyelesaikan aktivasi
pipx.Buat direktori induk untuk menyimpan file tutorial ini.
mkdir gcul_tutorialcd gcul_tutorialKecuali ditentukan lain, perintah yang tersisa harus dijalankan dari dalam direktori baru ini.
Buat lingkungan virtual Python dan instal library yang tersisa:
python3 -m venv example_clientcd example_clientsource ./bin/activatepip3 install google-auth googleapis-common-protos grpcio requestscd ..Library tersebut adalah:
google-auth: untuk menangani autentikasi Google Cloud .googleapis-common-protos: pesan buffer protokol umum yang digunakan di seluruh Google API.grpcio: library gRPC untuk Python.requests: diperlukan oleh beberapa dependensi untuk mengirim permintaan HTTP.
Buat library Protocol Buffer
Untuk berinteraksi dengan Universal Ledger API menggunakan gRPC, aplikasi Python Anda memerlukan
library klien yang dikompilasi dari definisi
Protocol Buffer
(.proto) layanan. Definisi ini menentukan layanan, metode, dan jenis pesan API.
Bagian ini menunjukkan cara mendownload file .proto ini
dari repositori googleapis dan menggunakan grpcio-tools yang diinstal untuk
membuat kode sumber Python yang diperlukan.
Clone repositori GitHub googleapis tempat definisi Protocol Buffer untuk Google API dipublikasikan.
git clone https://github.com/googleapis/googleapis.gitBuat definisi Protocol Buffer dan binding gRPC untuk Universal Ledger API.
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.protoTindakan ini akan membuat beberapa file di direktori
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
Memanggil Universal Ledger API
Terakhir, buat skrip Python untuk memanggil Universal Ledger API menggunakan library yang dihasilkan. Simpan kode berikut sebagai example_client/endpoints.py.
Dalam kode, ganti nilai placeholder berikut:
PROJECT_ID: Google Cloud Project ID Anda–misalnya,my-project.REGION: region Google Cloud tempat endpoint Universal Ledger Anda berada–misalnya,us-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())
Untuk menjalankan skrip, buka direktori example_client.
Lingkungan virtual harus tetap aktif dari langkah-langkah penyiapan.
Ubah ke direktori skrip:
cd example_clientPerintah shell Anda akan mengonfirmasi bahwa lingkungan virtual sudah aktif (misalnya, diawali dengan
(example_client)).Jalankan skrip Python:
python3 endpoints.py
Anda akan melihat output seperti:
Found the following endpoints:
- projects/my-project/locations/us-east5/endpoint/gcul-pilot-testing
- projects/my-project/locations/us-east5/endpoint/gcul-user-testing
Langkah berikutnya
- Lihat semua metode di Universal Ledger API.
- Pelajari dukungan gRPC dalam bahasa lain.
- Pelajari definisi buffer protokol Universal Ledger API.