我们grpc-gateway
在我们的服务中使用。在服务中,我们正在调用一个 API,并将从 API 中获取一些用于非 2XX 响应的错误代码。我们必须包装该错误并从服务中返回它。
我正在使用grpc
状态从服务中返回它。
代码:
func wrapError(err error, statusCode codes.Code, errorCode string) error {
errorInfo := &dealv1.ErrorResponse{
ErrorCode: &errorCode,
}
status, err := status.New(statusCode, err.Error()).WithDetails(errorInfo)
if err != nil {
return err
}
return status.Err()
}
我在详细信息中使用自定义错误主体来牢记未来的可扩展性。
JSON:
{
"code": 2,
"message": "",
"details": [
{
"@type": "",
"errorCode": "overlaping_error_code"
}
]
}
我也以 protobuf 路径作为值来获取此@type属性。有人知道我怎样才能摆脱这个@type 属性,或者有没有更好的方法来返回错误正文?