मुख्य कंटेंट तक स्किप करें

Go

API टोकन और platform.proto के लिए gRPC मार्गदर्शन देखें। protoc, Go और Go protobuf प्लगइन इंस्टॉल करें।

मॉड्यूल बनाकर जनरेटर इंस्टॉल करें:

go mod init example.com/reconstruct-client
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

प्लगइन protoc के लिए उपलब्ध करके क्लाइंट बनाएँ। अन्य मॉड्यूल पथ हो तो मॉड्यूल/कमांड दोनों में example.com/reconstruct-client बदलें:

export PATH="$(go env GOPATH)/bin:$PATH"
mkdir -p platformpb
protoc -I. platform.proto \
--go_out=platformpb --go_opt=paths=source_relative \
--go_opt=Mplatform.proto=example.com/reconstruct-client/platformpb \
--go-grpc_out=platformpb --go-grpc_opt=paths=source_relative \
--go-grpc_opt=Mplatform.proto=example.com/reconstruct-client/platformpb

platform.proto के पास main.go सहेजें:

package main

import (
"context"
"fmt"
"log"
"os"
"time"

pb "example.com/reconstruct-client/platformpb"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/metadata"
)

func main() {
token := os.Getenv("CR_RECONSTRUCT_API_TOKEN")
if token == "" { log.Fatal("set CR_RECONSTRUCT_API_TOKEN") }

conn, err := grpc.NewClient("reconstruct.dev:443",
grpc.WithTransportCredentials(credentials.NewClientTLSFromCert(nil, "")))
if err != nil { log.Fatal(err) }
defer conn.Close()

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
ctx = metadata.AppendToOutgoingContext(ctx, "authorization", "Bearer "+token)
client := pb.NewPlatformServiceClient(conn)

page, err := client.ListCatalogs(ctx, &pb.ListCatalogsRequest{PageSize: 10})
if err != nil { log.Fatal(err) }
for _, catalog := range page.GetCatalogs() {
detail, err := client.GetCatalog(ctx, &pb.GetCatalogRequest{CatalogId: catalog.GetCatalogId()})
if err != nil { log.Fatal(err) }
fmt.Println(detail.GetCatalogId(), detail.GetDescription())
}
}

go mod tidy, फिर go run . चलाएँ। बनी फ़ाइलें platformpb/platform.pb.go, platformpb/platform_grpc.pb.go हैं।