go - 如何从 xxx.pb.go 获取服务描述

标签 go protocol-buffers grpc

当我使用 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出了这个包?
我想获取服务名称和方法

最佳答案

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

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

关于go - 如何从 xxx.pb.go 获取服务描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58609530/

相关文章:

linux - NT_GNU_BUILD_ID 有什么用?

reactjs - 我如何在同一个域上运行 Golan 应用程序(后端)和 ReactJS 应用程序(前端)以防止 CORS?

go - Neoism golang 密码查询结果

c++ - 具有大消息的跨平台 RPC

c++ - 编译返回字符串 & 的函数的问题

php - 如何使用带有 "grpc_php_plugin"的 PHP 和 Windows 10 的 gRPC?

c# - 如何在 C# 中生成 .proto 文件或使用 'Code First gRPC'

grpc - 为 Hyperledger fabric V1.0 编写 gRPC 客户端

go - 使用表单数据和身份验证在 Go 中发出 POST 请求

matlab - 如何让 Google Protobuf 在 Matlab 中工作?