grpcurlコマンドでNode-REDのGRPCサーバのメソッドを呼び出す
前提
項目 | バージョン |
---|---|
OS | Ubuntu-20-04 |
grpcurl | 1.8.6 |
evansほど高機能なツールではないですが、GRPC版のcurlコマンドです。
インストール
「Linux(Ubuntu-20.04)環境にhomebrewをインストールする」参照
GRPCサーバ起動(Node-RED)
Node-REDでGRPCサーバを作成します。(node-red-contrib-grpcモジュール使用)
サーバ | URL |
---|---|
Node-RED | localhost:1880 |
GRPC Server | localhost:8082 |
GRPCサーバリフレクションが有効であれば簡単にgrpcurlやevansでメソッド呼び出しができるのですが、無効になっている場合は.protoファイルを作成する必要があります。
node-red-contrib-grpcモジュールを使用している場合は、protoファイルが存在せず、ノード内に記載しますので、同じ内容のprotoファイルを無理矢理作成します。※他に良い方法あったら教えてください(grpc-callノードを使う以外で)
Node-RED起動すればGRPCサーバも起動します。
$ node-red
GRPCサーバ起動完了です。
grpcurlコマンドの使い方
grpcurlの使い方は以下の通りです。
grpcurl ホスト:ポート パッケージ.サービス.メソッド
もしくは以下です。
grpcurl ホスト:ポート パッケージ.サービス/メソッド
Failed to dial target host “ホスト:ポート”: tls: first record does not look like a TLS handshake
secure TLS、mutual TLSをサポートしているとの事ですが、オプション未指定の場合TLSとなるようです。
grpcurl supports both secure/TLS servers and plain-text servers (i.e. no TLS) and has numerous options for TLS configuration. It also supports mutual TLS, where the client is required to present a client certificate.
このエラーが出た場合は-plaintext
オプションを使用します。
grpcurl -plaintext localhost:8081 package.ServiceName/HelloWorld
server does not support the reflection API
GRPCサーバがリフレクションをサポートしていない場合にこのエラーが出ます。
With this tool you can also browse the schema for gRPC services, either by querying a server that supports server reflection
この場合は、evansコマンド同様に.protoファイルの指定が必要になります。
GRPC call(WSL)
ではgrpcurlコマンドで呼び出します。
$ grpcurl -proto sample.proto list hello.Greeter $ grpcurl -d '{"id": 30, "name": "takahashi"}' -plaintext -proto sample.proto localhost:8082 hello.Greeter.HelloWorld { "message": "30:takahashi" }
sample.proto
syntax = "proto3"; package hello; service Greeter { rpc HelloWorld(Request) returns (Reply) {} } message Request { int32 id = 1; string name = 2; } message Reply { string message = 1; }
参考サイト

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
資格:少額短期保険募集人,FP3級,宅建士
コメント