我是协议缓冲区和gRPC的新手。现在我正在尝试在Go中使用grpcgrpc-网关构建客户端/服务器架构。
我试着效仿一些例子,但最终总是遇到同样的问题。用protoc生成代码后,我运行go build,得到了这个错误:
proto/helloworld/hello_world.pb.gw.go:64:2: cannot use msg (type *HelloReply) as type protoreflect.ProtoMessage in return argument:
*HelloReply does not implement protoreflect.ProtoMessage (missing ProtoReflect method)
proto/helloworld/hello_world.pb.gw.go:98:2: cannot use msg (type *HelloReply) as type protoreflect.ProtoMessage in return argument:
*HelloReply does not implement protoreflect.ProtoMessage (missing ProtoReflect method)
这是go.mod:
module github.com/riccardopedrielli/grpc-gateway-test
go 1.15
require (
github.com/golang/protobuf v1.4.3
github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0
google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea
google.golang.org/grpc v1.35.0
google.golang.org/protobuf v1.25.0
)
这是hello_world.proto
:
syntax = "proto3";
package helloworld;
import "google/api/annotations.proto";
option go_package = "github.com/riccardopedrielli/grpc-gateway-test/proto/helloworld";
// Here is the overall greeting service definition where we define all our endpoints
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {
option (google.api.http) = {
get: "/v1/example/echo/{name}"
};
}
}
// The request message containing the user's name
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
这是指向存储库的链接:https://github.com/riccardopedrielli/grpc-gateway-test
我看到生成的go文件之间的一个区别是它们导入了不同的协议库。
由proc-gen-go
导入github.com/golang/protobuf/proto
生成的文件。
由proc-gen-grpc-网关
导入google.golang.org/protobuf/proto
生成的文件。
这可能是问题的原因吗?
我仍然不清楚应该使用哪一个,以及如何在两个发电机中强制使用相同的。
我是grpc的新手,在这一点上很迷茫,所以我可以省略一些重要的信息。欢迎任何建议。
非常感谢。
为了生成存根,我们可以使用protoc或bufprotoc是业界广泛使用的更经典的一代体验。不过,它有一个相当陡峭的学习曲线
您应该查看gRPC网关上的教程系列,即。,https://grpc-ecosystem.github.io/grpc-gateway/docs/tutorials/.此外,您可以参考我的简单hello world程序,该程序使用gRPC网关,即。,https://github.com/iamrajiv/helloworld-grpc-gateway.
好吧,我解决了这个问题。
我通过snap安装了protoc,稳定通道的版本是3.11.4
现在我升级到了3.14.0,一切都很好。
正如问题所说,我从源代码编译了grpc,也做了,但是,grpc_python_plugin的
我想将一个协议(由grpc生成)转换为JSON。 我知道protobuf可以使用:(https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/util/JsonFormat)但这并没有包含在Android系统中的()中,它是Android系统中使用的(https://github.c
问题内容: 我正在尝试使用.get方法使用Alamofire调用服务。该请求没有什么特别的,没有任何参数,只是一个Authorization标头。 我在这里有点生气,因为当我在具有相同URL和授权令牌的邮递员上运行请求时,请求工作正常,但是当我使用Alamofire运行应用程序代码时,它将返回此错误: 错误域= NSPOSIXErrorDomain代码= 100“协议错误” UserInfo =
我试图在codenameone中构建一个示例,当我试图生成ios构建时,我在codenameone构建服务器下的构建中得到了像"构建错误"这样的错误。 这是我得到的错误日志 如果有人对此有想法,请帮助我... 对不起,我的英语很差。。 提前谢谢。。
本文档作为 gRPC 在 HTTP2 草案17框架上的实现的详细描述,假设你已经熟悉 HTTP2 的规范。产品规则采用的是ABNF 语法 大纲 以下是 gRPC 请求和应答消息流中一般的消息顺序: 请求 → 请求报头 *有定界符的消息 EOS 应答 → 应答报头 *有定界符的消息 EOS 应答 → (应答报头 *有定界符的消息 跟踪信息) / 仅仅跟踪时 请求 请求 → 请求报头 *界定的消息 E
我正在尝试使用maven protoc插件和我在Cygwin中构建的protoc可执行文件编译协议缓冲区代码。我无法从Cygwin或Windows命令行执行此操作。下面是我在Windows中运行它时得到的输出,但从Cygwin运行时的错误是相同的。我觉得这很奇怪,因为如果问题是路径转换,那么我希望其中一个可以工作。这个可执行文件是用Cygwin的g构建的,这可能会影响到事情吗?(显而易见,该目录确