【发布时间】:2018-12-02 06:41:04
【问题描述】:
spec 的 google.protobuf.Empty 声明:
您可以重复使用的通用空消息以避免定义重复 API 中的空消息。一个典型的例子是使用它作为请求 或 API 方法的响应类型。
我一直在内部提倡使用空消息包装器,以保持向后兼容性。例如,假设我们有一个FooService:
service Foo {
rpc List(google.protobuf.Empty) returns (ListResponse) {}
}
message ListResponse {
repeated Foo results = 1;
}
message Foo {...}
如果将来我们需要向这个列表请求添加分页,我们需要引入一个请求包装器:
message ListRequest {
int limit = 1;
int offset = 2;
}
然后更新rpc签名:
rpc List(ListRequest) returns (ListResponse) {}
这是一个向后不兼容的变化,还是 protobuf 格式可以优雅地处理这个?
【问题讨论】:
标签: protocol-buffers grpc