如何在节点后端实现 gRPC 网关

问题描述

我正在尝试按照 gRPC gateway 指南在 Node.JS 服务器中实现 installation

这些步骤是为 ERROR: Syntax error at or near "$1" LINE 2: FROM $1.parcel t join bounds b ^ QUERY: SELECT st_asmvtgeom(st_transform(t.geom,3857),b.geom) AS geom,parcel_id FROM $1.parcel t join bounds b on st_intersects(t.geom,st_transform(b.geom,4269)) CONTEXT: PL/pgsql function inline_code_block line 17 at EXECUTE sql state: 42601 编写的,但我尝试在 Node.JS 中进行。

我找到了 this 响应,还有一些像 this one 这样的包,所以可以在 node 中实现。

阅读“安装指南”后,主要问题似乎是获取二进制文件

  • protoc-gen-grpc-gateway
  • protoc-gen-openapiv2
  • protoc-gen-go
  • protoc-gen-go-grpc

我已经从 here 下载了前两个二进制文件,所以问题可能是最后两个。

我假设 golang 来自 go,所以我必须搜索类似 golang内容。我见过 this npm 包,但是,我想尽可能多地自己实现。我不想依赖第三方。

此时我必须首先将二进制文件放入我的路径中,但没有后两个。

一旦定义了 gRPC 服务,下一步就是生成 gRPC 存根。我有这条线:

protoc-gen-node-grpc

这样就可以生成文件了。我不知道是否必须使用 RUN protoc -I=. mygrpc.proto --js_out=import_style=commonjs,binary:./my/folder/ --grpc-web_out=import_style=commonjs,mode=grpcwebtext:./my/folder/ --js_out 来创建客户端和服务文件

然后,下一步是使用 --grpc-web_out 生成反向代理。

我愿意(如向导所说):

protoc-gen-grpc-gateway

这会生成一个 protoc -I=./my/path/ myproto.proto \ --grpc-gateway_out ./my/path/ \ --grpc-gateway_opt logtostderr=true \ --grpc-gateway_opt paths=source_relative \ --grpc-gateway_opt generate_unbound_methods=true 文件.go

进入文件说:

myproto.pb.gw.go

所以我假设步骤已正确完成,但是:如何在我的 Node.JS 服务器中执行此操作?

我有一个使用 Express API 的节点项目,我想使用 grpc-gateway 而不是 express API 端点...但我只有一个 // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. // source: myproto.proto /* Package myproto is a reverse proxy. It translates gRPC into RESTful JSON APIs. */ 文件

我的原型版本是:

libprotoc 3.14.0

提前致谢。

解决方法

作为问题注释,grpc-gateway 只生成 Go 代码。随意使用 Go,只需要从 proto 生成代码并添加服务。您可以在 Java helloworlde/grpc-gateway 中引用我的示例代码;而且buf在生成代码方面比protoc更好。如果你想自己写,你可以参考Java中的ReflectionCall.java wirte,它可以在不生成代码的情况下调用服务器。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...