我正在尝试使用 Google Cloud Endpoints 制作基于 gRPC 的 API,可以对传入的 REST 请求进行转码。我正在关注他们的示例代码,但我没有任何关于如何使用 annotation.proto 或 empty.proto 正确导入和编译的文档。
谢谢!
我正在尝试使用 Google Cloud Endpoints 制作基于 gRPC 的 API,可以对传入的 REST 请求进行转码。我正在关注他们的示例代码,但我没有任何关于如何使用 annotation.proto 或 empty.proto 正确导入和编译的文档。
谢谢!
我不明白这是 grpc-gateway 的一部分。按照我跑的文档
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
并编译成功。
这可能不是一个好主意。您可以复制google/api/annotations.proto
并google/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
empty.proto 和 annotation.proto 默认不包括在内,所以你需要带一份。具体来说,您可以在项目的目录中制作它们的副本,或在现有项目中引用它们(例如 Protobuf git repo)。
不引用 grpc-ecosystem/grpc-gateway 使用的副本可能是个好主意,因为他们可能希望将来移动它。
安装时使用go list -m -f '{{.Dir}}'
有助于更好地解决go mod
依赖关系$GOPATH/pkg/mod
。
grpc_ecosystem_path=`go list -m -f '{{.Dir}}' github.com/grpc-ecosystem/grpc-gateway`
protoc \
--proto_path="$grpc_ecosystem_path/third_party/googleapis" \
# ...