如何从xxx.pb.go获取服务描述
当我使用xxx.proto生成golang protobuf文件时如何从xxx.pb.go获取服务描述,go,protocol-buffers,grpc,Go,Protocol Buffers,Grpc,当我使用xxx.proto生成golang protobuf文件时 我明白了 如何从该软件包中获取serviceDesc 我想获取服务名称和方法访问服务和方法的唯一方法是通过proto文件的文件描述符proto。或者,v2protoapi包含一个变量,如果您不知道文件名,该变量将包含描述符proto(请注意,单个proto包可能包含多个文件) 有关此主题的更多讨论,请参阅(特别是dsnet关于v2 proto API在这方面如何工作的最后一条评论)。似乎您应该在服务上使用,以获取从名称到Serv
我明白了 如何从该软件包中获取
serviceDesc
我想获取服务名称和方法访问服务和方法的唯一方法是通过proto文件的
文件描述符proto
。或者,v2protoapi包含一个变量,如果您不知道文件名,该变量将包含描述符proto(请注意,单个proto包可能包含多个文件)
有关此主题的更多讨论,请参阅(特别是dsnet关于v2 proto API在这方面如何工作的最后一条评论)。似乎您应该在服务上使用,以获取从名称到
ServiceInfo
实例的映射。这在注册后使用,我想要的是:如果xxx.pb.go包是“test”,我想使用测试。_Auth_serviceDesc.ServiceName要找到已定义的服务,而不是写入字符串您需要让测试注册服务(以便您可以检索它),或者,在同一个包中,以便您可以访问未导出的名称_Auth_serviceDesc
。
...
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",
}