我有一项服务可以使用 protobuf 将对象的输入数组传递给服务器,并在服务器上成功接收它。问题是我根据响应定义得到了响应。这是回复
[ { uuid: '',
quantity: 3,
procurement_detail_uuid: '',
distribution_officer_uuid: '',
substore_uuid: '2343423443423' },
{ uuid: '',
quantity: 3,
procurement_detail_uuid: '',
distribution_officer_uuid: '',
substore_uuid: '676767' } ]
这是输入的定义
message ProcurementStockDistributionUpsertReqInput {
string uuid = 1;
int32 quantity = 2;
string procurement_detail_uuid = 3;
string distribution_officer_uuid = 4;
string substore_uuid = 5;
}
如您所见,有些字段是空的。我考虑过使用oneof
如果您的消息包含许多可选字段,并且最多同时设置一个字段,则可以强制执行此行为并使用 oneof 功能节省内存。
我认为oneof
这是选择传递具有值但遇到错误的字段的正确方法。然后我像这样回滚我的代码
service Procurement {
rpc distributeUpsert (ProcurementStockDistributionUpsertReq) returns (ProcurementStockDistributionRes) {}
}
message ProcurementStockDistributionUpsertReq {
message ProcurementStockDistributionUpsertReqInput {
string uuid = 1;
int32 quantity = 2;
string procurement_detail_uuid = 3;
string distribution_officer_uuid = 4;
string substore_uuid = 5;
}
repeated ProcurementStockDistributionUpsertReqInput stocks = 1;
}
如何预先省略原型中的那些空字段