gRPC是一個高性能、開源的遠程過程調用(RPC)框架,它可以讓客戶端和服務器之間進行雙向流式通信。而在實際開發中,我們還需要對數據進行序列化和反序列化,這時候就需要用到gRPC的JSON對象。
//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對象 { "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": "" } } } } } }
上面的代碼展示了一個proto文件,以及使用gRPC的JSON對象生成器生成的對應的JSON對象。可以看到,使用JSON對象可以方便地對請求和響應進行格式化和解析,是gRPC與其他RPC框架區別之一。
上一篇python 除法求余