GRPC是Google開源項目,可用于高性能、開放源代碼、通用RPC框架。
Go語言是一門編譯型語言,它使用了通用的編程語言范型,但是它并不像Java、Python使用虛擬機。Go語言的結(jié)構(gòu)和C語言類似,但是加入了面向?qū)ο蟮奶匦裕瑫r也在語言層面支持CSP并發(fā)模式。
JSON是一種數(shù)據(jù)格式。JSON是一種輕量級的數(shù)據(jù)交換格式,易于閱讀和編寫,同時也易于機器解析和生成。JSON是獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣。
package main import ( "context" "encoding/json" "fmt" "github.com/golang/protobuf/proto" "google.golang.org/grpc" pb "google.golang.org/grpc/examples/helloworld/helloworld" ) type User struct { Name string `json:"name"` Age int `json:"age"` } func main() { conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure()) if err != nil { fmt.Printf("did not connect: %v", err) return } defer conn.Close() c := pb.NewGreeterClient(conn) // json data jsonData := &User{ Name: "John", Age: 20, } jsonBytes, _ := json.Marshal(jsonData) // grpc message message := &pb.HelloRequest{ Name: "world", JsonData: jsonBytes, } // grpc call response, err := c.SayHello(context.Background(), message) if err != nil { fmt.Printf("could not greet: %v", err) return } fmt.Printf("Greeting: %s", response.Message) }
上述代碼演示了如何將JSON數(shù)據(jù)傳遞到GRPC服務器。在此代碼中,我們使用Go中的標準JSON庫來將User類型的數(shù)據(jù)編碼為JSON字節(jié)數(shù)組。然后將其填充到HelloRequest請求消息中并將其傳遞到Greeter服務器的SayHello方法。