1

我正在尝试按照安装指南在 Node.JS 服务器中实现gRPC 网关。

这些步骤是为之编写的,golang但我尝试在 Node.JS 中执行。

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

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

  • protoc-gen-grpc-网关
  • protoc-gen-openapiv2
  • protoc-gen-go
  • protoc-gen-go-grpc

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

我假设go来自golang所以我必须搜索类似的东西protoc-gen-node-grpc。我已经看过这个npm 包,但是,我想尽可能地自己实现。我不想依赖第三方。

在这一点上,我必须首先将二进制文件放入我的路径,但没有最后两个。

一旦定义了 gRPC 服务,下一步就是生成 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.

进入文件说:

// 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.
*/

因此,我假设步骤已正确完成,但是:如何将其执行到我的 Node.JS 服务器中?

我有一个使用 Express API 的节点项目,我想使用 grpc-gateway 而不是 express API 端点......但我只有一个.go文件。

我的原型版本是:

库协议 3.14.0

提前致谢。

4

1 回答 1

1

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

于 2021-01-10T03:59:53.493 回答