问题描述
Google文档建议使用以下模型(https://cloud.google.com/apis/design/errors#error_model)在gRPC中发送大量错误,但似乎每次都会将错误字符串发送给用户。我要做的是发送代码,然后在到达客户端时将其映射到字符串。
我想知道的是proto3
语言支持写数据的方式,以便我可以在客户端使用它,而无需定义用于将错误代码映射到错误消息的自定义结构。
解决方法
在您的proto
定义中,定义一个简单的enum
,其中包含任何其他错误代码:
enum extraStatusCode {
UNKNOWN = 0; // not set/used
TOO_MANY_FOOS = 1;
NOT_ENOUGH_BARS = 2;
}
并将其作为所有返回的message
中的顶级字段包含:
message User {
string uid = 1;
string email = 2;
// ...
extraStatusCode = 15;
}
如果发送的消息的extraStatusCode
非零-则遇到边缘情况。