go - 如何从 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 属性,或者有没有更好的方法来返回错误正文?
解决方案
推荐阅读
- xml - 使用 Ansible 解析复杂的 XML
- c# - 控制台应用程序仅在运行批处理脚本时按住键时终止
- android - 如何使用 DataBinding 为许多 UI 字段管理 Android MVVM、Android 架构组件(LiveData)?
- python - 在 Python 中是否有存储函数缓存文件的标准位置?
- python - 在写入 Excel 之前清除 json 中的标签
- c# - 我有一组 3D 线,我想要输出所有相互连接的 3D 线
- maven - 如何使用 Docker-Maven 映像作为基础将 pom.xml 依赖项打包到 Docker 映像中?
- c# - 如何获得 6 个位置 (x,y,z) 以便它们围绕远离原点的自定义位置形成一个圆圈?
- python - LabelEncoder 将不同的值编码为相同的值
- ios - 无法使用类型为“(测量)的参数列表调用类型“浮点”的初始化程序
)'