proto3 grpc 客户端:它们都可以省略发送消息字段吗?
proto3 grpc clients: can they all omit sending message fields?
给定以下原型定义
google 代码生成生成的所有自动生成的 grpc 客户端都可以省略 PagingInfo 中的发送字段吗?
在 python 客户端中,我可以使用如下代码省略发送该字段:
request = SearchRequest(paging_info=dict(a=OptionalField(d='d', e='e')), query='blah')
grpc 原型定义:
syntax = "proto3";
message OptionalField {
string d = 1;
string e = 2;
}
message PagingInfo {
OptionalField a = 1;
OptionalField b = 2;
OptionalField c = 3;
}
message SearchRequest {
string query = 1;
PagingInfo paging_info = 2;
}
message SearchResponse {
string a = 1;
}
service SearchService {
rpc Search (SearchRequest) returns (SearchResponse);
}
在 proto3 中,所有元素都被视为 optional
(在 proto2 意义上),所以是的:任何兼容的实现都应该能够发送省略该元素的消息。
给定以下原型定义 google 代码生成生成的所有自动生成的 grpc 客户端都可以省略 PagingInfo 中的发送字段吗?
在 python 客户端中,我可以使用如下代码省略发送该字段:
request = SearchRequest(paging_info=dict(a=OptionalField(d='d', e='e')), query='blah')
grpc 原型定义:
syntax = "proto3";
message OptionalField {
string d = 1;
string e = 2;
}
message PagingInfo {
OptionalField a = 1;
OptionalField b = 2;
OptionalField c = 3;
}
message SearchRequest {
string query = 1;
PagingInfo paging_info = 2;
}
message SearchResponse {
string a = 1;
}
service SearchService {
rpc Search (SearchRequest) returns (SearchResponse);
}
在 proto3 中,所有元素都被视为 optional
(在 proto2 意义上),所以是的:任何兼容的实现都应该能够发送省略该元素的消息。