Golang和gRPC编组/解组或手动方法

时间:2018-10-24 16:56:19

标签: json go grpc

在“干净的体系结构”之后,我现在实现了一个gRPC交付包以与我的经理(服务)进行交互。我的域实体被定义为带有json标记的纯Go结构。存储层具有其自己的实体定义,以允许使用自定义类型(例如sql.NullInt64)。在这里,我使用手动方法将域实体转换为sql类型,反之亦然。在处理程序方面,我看到了相同的模式。我必须从/转换为gRPC类型。

gRPC实体结构<->域实体结构<-> SQL实体结构

我测试了以下内容,它似乎可以工作:

func (h *RPCHandler) DescribeRealm(ctx context.Context, in
*pb.DescribeRealmReq) (*pb.DescribeRealmResp, error) {

rlm, err := h.Manager.DescribeRealm(ctx, in.GetRealmId())
if err != nil {
    return nil, err
}

jb, err := json.Marshal(rlm)
if err != nil {
    return nil, err
}

r := &pb.Realm{}
if err := jsonpb.Unmarshal(bytes.NewReader(jb), r); err != nil {
    return nil, err
}

return &pb.DescribeRealmResp{
    Realm: r,
}, nil

我的问题如下:

这是在不同类型的结构/层之间转换数据的首选方法,还是我应该坚持手动方法?

最诚挚的问候,卡尔。

0 个答案:

没有答案