首页 > 解决方案 > 如何从 xxx.pb.go 获取服务描述

问题描述

当我使用 xxx.proto 生成一个 golang protobuf 文件时
,我看到 了

...

var _Auth_serviceDesc = grpc.ServiceDesc{
    ServiceName: "protobuf.Auth",
    HandlerType: (*AuthServer)(nil),
    Methods: []grpc.MethodDesc{
        {
            MethodName: "GenerateToken",
            Handler:    _Auth_GenerateToken_Handler,
        },
    },
    Streams:  []grpc.StreamDesc{},
    Metadata: "auth.proto",
}

我怎样才能serviceDesc摆脱这个包?
我想获取服务名称和方法

标签: goprotocol-buffersgrpc

解决方案


访问服务和方法的唯一方法是通过FileDescriptorProtoproto 文件。或者,v2 proto API 包含一个变量,该变量将包含描述符 proto,以防您不知道文件名(请注意,单个 proto 包可能包含多个文件)。

有关此主题的更多讨论,请参阅https://github.com/golang/protobuf/issues/489(特别是 dsnet 关于 v2 proto API 在这方面如何工作的最后评论)。


推荐阅读