如何导入 gRPC 空和 Google api 注释原型

How to import gRPC empty and Google api annotations proto

我正在尝试使用 Google Cloud Endpoints 来制作一个基于 api 的 gRPC,它可以 transcode incoming REST requests. I am following their example code 但我没有任何关于如何正确导入和编译的文档 annotation.proto 或 empty.proto.

谢谢!

我不明白这是 grpc-gateway 的一部分。通过 following the docs 我 运行

protoc -I/usr/local/include -I. -I$GOPATH/src -I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --go_out=plugins=grpc:. *.proto

编译成功

默认情况下不包含 empty.proto 和 annotation.proto,因此您需要带一份副本。具体来说,您可以在项目的目录中复制它们,或在现有项目中引用它们(例如 Protobuf git 存储库)。

引用grpc-ecosystem/grpc-gateway使用的副本可能是个好主意,因为他们将来可能想移动它。

这可能不是个好主意。 您可以将 google/api/annotations.protogoogle/api/http.proto 复制到本地项目并在 运行 python -m

时导入它们
mkdir -p google/api    
curl https://raw.githubusercontent.com/googleapis/googleapis/master/google/api/annotations.proto > google/api/annotations.proto     
curl https://raw.githubusercontent.com/googleapis/googleapis/master/google/api/http.proto > google/api/http.proto

python -m grpc_tools.protoc google/api/http.proto google/api/annotations.proto -I. --python_out=. --grpc_python_out=. your_proto.proto

重发:https://cloud.google.com/solutions/exposing-grpc-services-using-cloud-endpoints-pt1

$GOPATH/pkg/mod.

下安装时,使用 go list -m -f '{{.Dir}}' 有助于更好地解决 go mod 依赖项
grpc_ecosystem_path=`go list -m -f '{{.Dir}}' github.com/grpc-ecosystem/grpc-gateway`

protoc \
    --proto_path="$grpc_ecosystem_path/third_party/googleapis" \
# ...