问题标签 [grpc-gateway]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3232 浏览

python - 如何从 grpc-gateway 后面的 python 服务发送具有非正常状态的响应消息?

我正在 python 中的 grpc-gateway 后面编写一个 grpc 服务,如果某些用户的请求过多,我想提出 429 响应并在响应消息正文中提供验证码。

实际上我的问题是当我使用下面的代码块来提高状态码 429 时,之后我无法发送响应消息。

据我了解,唯一的 grpc 是不可能的,但我认为第三方可能有可能。

有什么解决办法吗?

0 投票
0 回答
1671 浏览

bazel - 带有 protobuf / gRPC-gateway / golang 的 bazel - 入门

所以我正在尝试将微服务(C#、Go、NodeJS)的 monorepo 转换为使用 bazel。现在只是玩它。我专注于一次性服务以开始并将其隔离为工作空间。go 服务显然是使用 protobuf 的 gRPC 服务,带有 protoc-gen-swagger 的 grpc-gateway 和 protoc-gen-gorm(这个不支持 bazel)。

代码使用类似的命令构建go build cmd/server/server.go

我希望获得一些关于如何开始使用所有依赖项构建这个项目的指导。

我看到一些可用于 protobuf/go 的规则,但我还不习惯浏览它们或决定哪个更好(由于 grpc 网关或 protoc gen gorm,我无法正常工作) - https://github.com/stackb/ rules_proto - https://github.com/bazelbuild/rules_go - https://github.com/stackb/rules_proto/tree/master/github.com/grpc-ecosystem/grpc-gateway

代码结构如下所示:

现在我只在 svc3 上工作。稍后我可能会将 WORKSPACE 移动到父文件夹。

我的 WORKSPACE 看起来像这样:

运行瞪羚在每个文件夹中为我的 go 项目创建了一堆 build.bazel 文件。

在 .proto 旁边,我有一个生成的 build.bazel 文件:

现在的问题:

  1. 不确定要引用其他原始文件的内容:“@com_github_infobloxopen_protoc_gen_gorm//options:proto_library”?并且不确定这是从 git 引用其他外部库的最佳方式。
  2. 如果我使用 bazel build //proto/v1:svc_proto 构建上述内容,我得到:没有这样的目标 '@com_github_grpc_ecosystem_grpc_gateway//protoc-gen-swagger/options:proto_library':目标 'proto_library' 未在包 'protoc-gen 中声明-招摇/选项'。可能与1有关。
  3. 我不确定使用哪个规则。因为我需要 grpc 网关,所以我想我需要专门使用 https://github.com/stackb/rules_proto/tree/master/github.com/grpc-ecosystem/grpc-gateway 但我也不能让它们工作.
  4. 我使用 statik ( https://github.com/rakyll/statik ) 将 swagger 文件打包到 go to server the swagger 中。有没有其他选择,或者如果没有,我如何调用自定义 bash/命令作为链中构建过程的一部分?

总之,我很确定用于构建原型和库的 BUILD.bazel 文件的结构是错误的,并且希望得到一些最新的指导(github 上充满了过时的 repos,使用过时的规则或根本不工作)。

0 投票
1 回答
3311 浏览

go - How to access request headers in grpc service proxied by. grpc-gateway in golang

I have a grpc server proxied by grpc-gateway. When I make a HTTP call to the gateway endpoint, my corresponding grpc service method is called. Now, the grpc service implementation receives a Context which has the headers. I couldn't figure out how to access the headers.

enter image description here

When I debug my grpc service and put a breakpoint, this is the structure of the Context object which my service receives. Now, how can I get the value of any of the HTTP request headers?

0 投票
1 回答
1988 浏览

go - 无法使用 protobuf 生成空数组/golang 代码片段

我们想在golang中将一个具有一个属性的对象/结构作为空列表/数组/切片返回给客户端(浏览器)。从 go 代码中,我们返回 len=0 和 capacity=0 的空切片,但是通过 protobuf,这个键被删除或设置为 nil 并被删除。

protobuf 代码

戈兰代码:

我得到了实际输出, {api: "v1"}但预期应该是{api: "v1",todos:[]}

请帮助/建议我们修复 protobuf 或 golang 语法。

0 投票
1 回答
69 浏览

node.js - 为什么 grpc-gateway 没有构建新的端点

当我尝试通过go build -o ./out/grpc-proxy生成代理文件时,代理正在生成而没有在 proto 文件中添加新端点

我使用 node.js (v10.16.3) 和 grpc/go 之后我构建了 grpc-proxy。

通过 protoc 从 *.proto 生成代码到 *.pb.go、*.pb.gw.go、*. swagger.json

然后用sed修补它,然后通过go build -o path 构建

这里一样

0 投票
2 回答
1289 浏览

go - 如何将元数据从 grpc-gateway 发送到 grpc 服务器?

如何将元数据从 grpc-gateway 发送到 grpc 服务器?

在客户端(grpc-gateway)上:

在服务器上:

0 投票
2 回答
1004 浏览

go - 如何通过 grpc-gateway 处理多个端点?

我确定所有服务都正常运行。

我有以下代码:

此代码段用于注册两个端点。

在我的 中main.go,我构建了一个解析器来解析名称到地址,然后注册两个端点并监听端口 8080。

但是我跑了之后go run main.go发现只能访问我注册的最后一个服务,也就是ssoservice(err = protos.RegisterSsoHandlerFromEndpoint(ctx, mux, r.Scheme()+"://author/sso", dialOpts)行)。

任何人都可以向我展示通过注册多个端点的正确方法的示例grpc-gateway吗?(使注册的所有服务grpc-gateway都可以成功访问)


[2020-01-31] 需要更多帮助,现在我的代码如下:

最新代码

其他代码与之前相同。

另外,这是名称解析器显示的结果:

名称解析器解析地址

0 投票
1 回答
416 浏览

go - 无法制作grpc-gateway .gw.pb 也没有错误

我已经编写了这个简单的 go 服务器和客户端,客户端发送两个数字,服务器回复总和,它可以工作。现在我正在尝试使用 grpc API 配置设置 grpc-gateway,并将客户端的请求从 GRPC 更改为 rest。

我正在使用本教程,在下面的部分中,我无法创建 gw,但没有错误:

我用这个:

在这个问题之后,我搜索并找到了这种方式,它既不工作(没有错误也没有输出!):

我在具有以下树的 grpc-test 目录中运行它:

grpc-测试树

那么,我做错了什么?

编辑:这是我的 sum.yaml:

这是 sum.proto:

0 投票
1 回答
648 浏览

reverse-proxy - 带有 HTTP+JSON 网关的 gRPC

我正在尝试用 Java 构建一个 gRPC 服务。我还想提供 HTTP+JSON 请求。我阅读了有关创建反向代理的 Envoy 和 grpc-gateway 的信息。但我无法有效地做到这一点。我在 proto 文件中添加了 google.api.http 选项,但我被困在这里。谁能告诉如何通过一些步骤解决这个问题?先感谢您。

0 投票
3 回答
1218 浏览

go - 如何在 grpc-gateway 中设置超时?

如何在 grpc-gateway 中设置超时?
我想限制请求执行的时间,在哪里可以设置时间限制?我需要为此创建一个“拦截器”吗?