gRPC是一個(gè)高性能、開源的遠(yuǎn)程過程調(diào)用(RPC)框架,它可以讓客戶端和服務(wù)器之間進(jìn)行雙向流式通信。而在實(shí)際開發(fā)中,我們還需要對(duì)數(shù)據(jù)進(jìn)行序列化和反序列化,這時(shí)候就需要用到gRPC的JSON對(duì)象。
//proto文件 syntax = "proto3"; package helloworld; import "google/protobuf/empty.proto"; message HelloRequest { string name = 1; } message HelloReply { string message = 1; } service Greeter { rpc SayHello(HelloRequest) returns (HelloReply) {} rpc SayRepeat(HelloRequest) returns (stream HelloReply) {} rpc SayManyHellos(stream HelloRequest) returns (HelloReply) {} rpc SayEmpty(google.protobuf.Empty) returns (HelloReply) {} } //生成json對(duì)象 { "type": "object", "properties": { "SayHello": { "request": { "type": "object", "properties": { "name": { "type": "string", "default": "" } } }, "response": { "type": "object", "properties": { "message": { "type": "string", "default": "" } } } }, "SayRepeat": { "request": { "type": "object", "properties": { "name": { "type": "string", "default": "" } } }, "response": { "type": "object", "properties": { "message": { "type": "string", "default": "" } } } }, "SayManyHellos": { "request": { "type": "object", "properties": { "name": { "type": "string", "default": "" } } }, "response": { "type": "object", "properties": { "message": { "type": "string", "default": "" } } } }, "SayEmpty": { "request": { "type": "object", "properties": {} }, "response": { "type": "object", "properties": { "message": { "type": "string", "default": "" } } } } } }
上面的代碼展示了一個(gè)proto文件,以及使用gRPC的JSON對(duì)象生成器生成的對(duì)應(yīng)的JSON對(duì)象??梢钥吹?,使用JSON對(duì)象可以方便地對(duì)請(qǐng)求和響應(yīng)進(jìn)行格式化和解析,是gRPC與其他RPC框架區(qū)別之一。