首页 > 解决方案 > 如何从 grpc-gateway 发送错误正文?

问题描述

我们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 属性,或者有没有更好的方法来返回错误正文?

标签: goerror-handlinggrpcgrpc-gateway

解决方案


推荐阅读