我已经编写了这个简单的 go 服务器和客户端,客户端发送两个数字,服务器回复总和,它可以工作。现在我正在尝试使用 grpc API 配置设置 grpc-gateway,并将客户端的请求从 GRPC 更改为 rest。
我正在使用本教程,在下面的部分中,我无法创建 gw,但没有错误:
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,grpc_api_configuration=path/to/your_service.yaml:. \
path/to/your_service.proto
我用这个:
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,grpc_api_configuration=$GOPATH/src/grpc-test/sum.yaml:. ./sum.proto
在这个问题之后,我搜索并找到了这种方式,它既不工作(没有错误也没有输出!):
protoc -I/usr/local/include -I. -I$GOPATH/src -I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --plugin=protoc-gen-grpc-gateway=$GOPATH/bin/protoc-gen-grpc-gateway --grpc-gateway_out=logtostderr=true,grpc_api_configuration=sum.yaml:. ./sum.proto
我在具有以下树的 grpc-test 目录中运行它:
那么,我做错了什么?
编辑:这是我的 sum.yaml:
type: google.api.Service
config_version: 3
http:
rules:
- selector: example.YourService.Echo
post: /v1/example/echo
body: "*"
这是 sum.proto:
syntax = "proto3";
service ComputeSum {
rpc ComputeSum (SumRequest) returns (ResultReply) {
}
}
message SumRequest {
int32 firstOperand = 1;
int32 secondOperand = 2;
}
message ResultReply {
int32 result = 1;
}