色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

grpc使用json協議

江奕云2年前13瀏覽0評論

gRPC是一個高性能、開源且通用的RPC框架,它支持多種編程語言。在默認情況下,gRPC使用Protocol Buffers作為默認的規范語言,但是它也支持使用JSON協議進行通信。

使用JSON協議,需要在Proto文件中定義使用json_format選項。如下所示:

import "google/protobuf/descriptor.proto";
import "google/protobuf/json_format.proto";
message MyMessage {
// message定義
}
// 設置json格式
extend google.protobuf.MessageOptions { 
string json_name = 50003; 
google.protobuf.BoolValue always_use_primitive_json = 50007; 
}
extend google.protobuf.FieldOptions { 
string json_name = 50003; 
}

當使用JSON協議時,需要使用JSON格式的請求與響應消息。這可以通過使用grpc-examples中的JSON代理實現。JSON代理在gRPC和JSON之間轉換。

在gRPC服務器中,需要使用以下方法啟用JSON代理:

//啟動一個gRPC服務器,借助json代理
s = grpc.server(futures.ThreadPoolExecutor(max_workers=10),
interceptors=(json_format.JSONSerializationInterceptor(),))
my_pb2_grpc.add_MyServiceServicer_to_server(MyServicer(), s)
#創建json代理
json_proxy = json_format.MessageToJson(request, preserving_proto_field_name = True)
#if you want to json deserialization when server receive messages.
json_proxy = json_format.Parse(json_input, proto_type)
response = s.process(json_proxy,)
result = json.loads(response)

在gRPC客戶端中,需要使用以下方法啟用JSON代理:

//創建一個Channel和Stubs
channel = grpc.insecure_channel()
stub = stub_file.MyServiceStub(channel)
#創建json代理
json_proxy = json_format.MessageToJson(request, preserving_proto_field_name = True)
#if you want to json deserialization when client receive messages.
json_proxy = json_format.Parse(json_input, proto_type)
response = stub.SayHello(json_proxy,)
result = json.loads(response)

gRPC使用JSON協議時,雖然沒有Protocol Buffers快,但是對于開發人員,JSON可能更加簡單易用。