Go 中的高性能 gRPC 富错误处理
Performant gRPC rich error handling in Go
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;
}
并将其作为 top-level 字段包含在任何返回的 message
:
中
message User {
string uid = 1;
string email = 2;
// ...
extraStatusCode = 15;
}
如果发送消息时带有 non-zero extraStatusCode
- 则遇到了边缘情况。
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;
}
并将其作为 top-level 字段包含在任何返回的 message
:
message User {
string uid = 1;
string email = 2;
// ...
extraStatusCode = 15;
}
如果发送消息时带有 non-zero extraStatusCode
- 则遇到了边缘情况。