【发布时间】:2018-06-04 11:39:30
【问题描述】:
我有一个非常简单的 gRPC 服务定义为:
syntax = "proto3";
package helloworld;
import "annotations.proto";
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello(HelloRequest) returns (HelloReply) {
option (google.api.http) = {
post: "/api/v1/hello"
body: "*"
}
}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
有趣的是,我使用 Envoy gRPC JSON 转码过滤器在 HTTP2/Protobuf HTTP1/JSON 之间“转换”。有关详细信息,请参阅https://www.envoyproxy.io/docs/envoy/latest/api-v1/http_filters/grpc_json_transcoder_filter。
此外,我正在使用 Bazel 构建基于 Java 的 gRPC 服务。 Envoy 转码过滤器需要一些注解:
option (google.api.http) = {
post: "/api/v1/hello"
body: "*"
}
我正在使用 proto_library (https://github.com/cgrushko/proto_library) 从 .proto 定义中生成相应的 .java 文件,但我无法添加
import "google/api/annotations.proto";
到 .proto 文件,因为我不知道如何将 https://github.com/googleapis/googleapis/blob/master/google/api/annotations.proto 导入 bazel 项目。
谢谢。
最好的问候, jj
【问题讨论】:
-
(1) 感谢您发布此信息。为了改进这个问题,我认为最好删除不相关的东西,比如提到 Envoy。 (2) 您的意思是在文件顶部导入
google/api/annotations.proto(而不是"annotations.proto")?
标签: java json protocol-buffers grpc bazel