问题标签 [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.
python - 如何从 grpc-gateway 后面的 python 服务发送具有非正常状态的响应消息?
我正在 python 中的 grpc-gateway 后面编写一个 grpc 服务,如果某些用户的请求过多,我想提出 429 响应并在响应消息正文中提供验证码。
实际上我的问题是当我使用下面的代码块来提高状态码 429 时,之后我无法发送响应消息。
据我了解,唯一的 grpc 是不可能的,但我认为第三方可能有可能。
有什么解决办法吗?
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 文件:
现在的问题:
- 不确定要引用其他原始文件的内容:“@com_github_infobloxopen_protoc_gen_gorm//options:proto_library”?并且不确定这是从 git 引用其他外部库的最佳方式。
- 如果我使用 bazel build //proto/v1:svc_proto 构建上述内容,我得到:没有这样的目标 '@com_github_grpc_ecosystem_grpc_gateway//protoc-gen-swagger/options:proto_library':目标 'proto_library' 未在包 'protoc-gen 中声明-招摇/选项'。可能与1有关。
- 我不确定使用哪个规则。因为我需要 grpc 网关,所以我想我需要专门使用 https://github.com/stackb/rules_proto/tree/master/github.com/grpc-ecosystem/grpc-gateway 但我也不能让它们工作.
- 我使用 statik ( https://github.com/rakyll/statik ) 将 swagger 文件打包到 go to server the swagger 中。有没有其他选择,或者如果没有,我如何调用自定义 bash/命令作为链中构建过程的一部分?
总之,我很确定用于构建原型和库的 BUILD.bazel 文件的结构是错误的,并且希望得到一些最新的指导(github 上充满了过时的 repos,使用过时的规则或根本不工作)。
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.
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?
go - 无法使用 protobuf 生成空数组/golang 代码片段
我们想在golang中将一个具有一个属性的对象/结构作为空列表/数组/切片返回给客户端(浏览器)。从 go 代码中,我们返回 len=0 和 capacity=0 的空切片,但是通过 protobuf,这个键被删除或设置为 nil 并被删除。
戈兰代码:
我得到了实际输出, {api: "v1"}
但预期应该是{api: "v1",todos:[]}
请帮助/建议我们修复 protobuf 或 golang 语法。
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 构建
和这里一样
go - 如何将元数据从 grpc-gateway 发送到 grpc 服务器?
如何将元数据从 grpc-gateway 发送到 grpc 服务器?
在客户端(grpc-gateway)上:
在服务器上:
go - 如何通过 grpc-gateway 处理多个端点?
我确定所有服务都正常运行。
我有以下代码:
此代码段用于注册两个端点。
在我的 中main.go
,我构建了一个解析器来解析名称到地址,然后注册两个端点并监听端口 8080。
但是我跑了之后go run main.go
发现只能访问我注册的最后一个服务,也就是sso
service(err = protos.RegisterSsoHandlerFromEndpoint(ctx, mux, r.Scheme()+"://author/sso", dialOpts)
行)。
任何人都可以向我展示通过注册多个端点的正确方法的示例grpc-gateway
吗?(使注册的所有服务grpc-gateway
都可以成功访问)
[2020-01-31] 需要更多帮助,现在我的代码如下:
其他代码与之前相同。
另外,这是名称解析器显示的结果:
go - 无法制作grpc-gateway .gw.pb 也没有错误
我已经编写了这个简单的 go 服务器和客户端,客户端发送两个数字,服务器回复总和,它可以工作。现在我正在尝试使用 grpc API 配置设置 grpc-gateway,并将客户端的请求从 GRPC 更改为 rest。
我正在使用本教程,在下面的部分中,我无法创建 gw,但没有错误:
我用这个:
在这个问题之后,我搜索并找到了这种方式,它既不工作(没有错误也没有输出!):
我在具有以下树的 grpc-test 目录中运行它:
那么,我做错了什么?
编辑:这是我的 sum.yaml:
这是 sum.proto:
reverse-proxy - 带有 HTTP+JSON 网关的 gRPC
我正在尝试用 Java 构建一个 gRPC 服务。我还想提供 HTTP+JSON 请求。我阅读了有关创建反向代理的 Envoy 和 grpc-gateway 的信息。但我无法有效地做到这一点。我在 proto 文件中添加了 google.api.http 选项,但我被困在这里。谁能告诉如何通过一些步骤解决这个问题?先感谢您。
go - 如何在 grpc-gateway 中设置超时?
如何在 grpc-gateway 中设置超时?
我想限制请求执行的时间,在哪里可以设置时间限制?我需要为此创建一个“拦截器”吗?