【发布时间】:2020-11-27 21:39:02
【问题描述】:
gRPC 新手。我有一个简单的 api:
Customer getCustomer(int id)
List<Customer> getCustomers()
所以我的原型看起来像这样:
message ListCustomersResponse {
repeated Customer customer = 1;
}
rpc ListCustomers (google.protobuf.Empty) returns (ListCustomersResponse);
rpc GetCustomer (GetCustomerRequest) returns (Customer);
我试图追随 Google 在风格上的领先。最初我有 returns (stream Customer) 用于 GetCustomers,但 Google 似乎更喜欢 ListxxxResponse 样式。当我生成代码时,它最终是:
public void getCustomers(com.google.protobuf.Empty request,
StreamObserver<ListCustomersResponse> responseObserver) {
对比:
public void getCustomers(com.google.protobuf.Empty request,
StreamObserver<Customer> responseObserver) {
我错过了什么吗?当我可以流式传输 Customer 并获得流式传输功能时,为什么还要麻烦创建 ListCustomersResponse?
ListCustomersResponse 只是一次流式传输整个列表,而不是流式传输每个客户。 Google 的偏好似乎是一直返回 ListCustomersResponse 样式。
什么时候使用 ListxxxResponse 与流响应比较合适?
【问题讨论】:
-
我已经编辑了您的标题,使其对搜索结果更具描述性,但我认为更改您的措辞并不合适。请随时重新编辑或还原。