gRPC 服务器错误处理程序 golang
gRPC server error handler golang
我想了解 golang、gRPC 和 protobuf 的良好实践。
我正在实施以下 gRPC 服务
service MyService {
rpc dosomethink(model.MyModel) returns (model.Model) {
option (google.api.http) = { post: "/my/path" body: "" };
}
}
我编译了protobufs。事实上,protobuf 给了我们一个从 http 到 grpc 的 httpproxy。
实现该服务的代码:
import "google.golang.org/grpc/status"
func (Abcd) Dosomethink(c context.Context, sessionRequest *model.MyModel) (*model.Model, error) {
return nil, status.New(400,"Default error message for 400")
}
我想要一个带有消息 "Default error message for 400" 的 400 http 错误(在 http 代理中),消息有效,但 http 错误始终是 500。
你知道这方面的任何 post 或文档吗?
您需要 return 清空 model.Model
对象,以便 protobufs 能够正确序列化消息。
尝试
import "google.golang.org/grpc/status"
func (Abcd) Dosomethink(c context.Context, sessionRequest *model.MyModel) (*model.Model, error) {
return &model.Model{}, status.Error(400,"Default error message for 400")
}
错误处理程序:
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
return data, status.Errorf(
codes.InvalidArgument,
fmt.Sprintf("Your message", req.data),
)
如需有关错误处理的更多信息,请查看以下链接。
我想了解 golang、gRPC 和 protobuf 的良好实践。
我正在实施以下 gRPC 服务
service MyService {
rpc dosomethink(model.MyModel) returns (model.Model) {
option (google.api.http) = { post: "/my/path" body: "" };
}
}
我编译了protobufs。事实上,protobuf 给了我们一个从 http 到 grpc 的 httpproxy。
实现该服务的代码:
import "google.golang.org/grpc/status"
func (Abcd) Dosomethink(c context.Context, sessionRequest *model.MyModel) (*model.Model, error) {
return nil, status.New(400,"Default error message for 400")
}
我想要一个带有消息 "Default error message for 400" 的 400 http 错误(在 http 代理中),消息有效,但 http 错误始终是 500。
你知道这方面的任何 post 或文档吗?
您需要 return 清空 model.Model
对象,以便 protobufs 能够正确序列化消息。
尝试
import "google.golang.org/grpc/status"
func (Abcd) Dosomethink(c context.Context, sessionRequest *model.MyModel) (*model.Model, error) {
return &model.Model{}, status.Error(400,"Default error message for 400")
}
错误处理程序:
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
return data, status.Errorf(
codes.InvalidArgument,
fmt.Sprintf("Your message", req.data),
)
如需有关错误处理的更多信息,请查看以下链接。