问题:
上个星期左右,我一直在进行有关Udemy的Golang微服务课程的编码,遇到了问题。
基本上,讲师通过编写.proto文件向我们介绍了Go-Micro和RPC。现在,我对GRPC有一些经验,但是对Go-Micro没有任何经验。问题在于讲师没有显示实际的protoc
命令和最终的标志,而只是显示了它。我以为这是一条微不足道的命令,但是运行protoc greeter.proto go_out=.
之后,我缺少了 client 片段。
预期:
pb.go文件的外观与the instructor's相同,在pb.go文件中包含客户端和服务器摘要。
实际:
缺少客户片段。
命令运行:
protoc greeter.proto go_out=.
代码:
.proto文件:
syntax = "proto3";
service Greeter {
rpc Hello(HelloRequest) returns (HelloResponse) {}
}
message HelloRequest {
string name = 1;
}
message HelloResponse {
string greeting = 2;
}
答案 0 :(得分:0)
我使用以下命令:
protoc --proto_path=$GOPATH/src:. --micro_out=. --go_out=plugins=grpc:. *.proto
从原始文件所在的目录开始。它生成与客户端代码一样好的服务。我在go-micro github存储库和go-micro网站上的许多示例中找到了此命令。
这是用于grpc的,但是这个主意还可以。
答案 1 :(得分:0)
希望这会有所帮助:
第一个用于生成原始文件,第二个用于反向代理
在此filename.proto中:-filename是您的文件名
# Generate proto
protoc -I/usr/local/include -I. -I$GOPATH/src -I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --go_out=google/api/annotations.proto=github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis/google/api,plugins=grpc:. filename.proto
#Reverse Proxy For REST
protoc -I/usr/local/include -I. -I$GOPATH/src -I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --grpc-gateway_out=logtostderr=true:. filename.proto