🐥
Postman でgRPC のリクエスト送信してみる
はじめに
どうやらPostman v9.7.1からgRPC のリクエストがサポートされるようになったらしい。gRPC 公式のPython Quick start で試してみる。
Postman v9.7.1
What's New
1. Support for gRPC Request
With this release, you can now test your gRPC request in Postman. To get started, open a Workspace, click New and then select "gRPC Request".
前提条件
- Python 3.5以降
-
pip
9.0.1以降
私のテスト環境
- Windows 10 Home
- Python 3.10.2
-
pip
21.2.4 - Postman v9.13.1
準備
gRPC/gRPC ツールのインストール
$ python -m pip install grpcio grpcio-tools
サンプルコードのダウンロード
$ git clone -b v1.43.0 https://github.com/grpc/grpc
Protobuf の定義
grpc/examples/protos/helloworld.proto
を更新。
helloworl.proto
syntax = "proto3";
option java_multiple_files = true;
option java_package = "io.grpc.examples.helloworld";
option java_outer_classname = "HelloWorldProto";
option objc_class_prefix = "HLW";
package helloworld;
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
// 以下行の追加
rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
gRPC コードの生成
grpc/examples/python/helloworld
ディレクトリで以下のコマンドを実行。
$ python -m grpc_tools.protoc -I../../protos --python_out=. --grpc_python_out=. ../../protos/helloworld.proto
サーバコードの修正
ポートは50051みたい。
greeter_server.py
from concurrent import futures
import logging
import grpc
import helloworld_pb2
import helloworld_pb2_grpc
class Greeter(helloworld_pb2_grpc.GreeterServicer):
# 変更
def SayHello(self, request, context):
return helloworld_pb2.HelloReply(message='Hello, %s!' % request.name)
# 追加
def SayHelloAgain(self, request, context):
return helloworld_pb2.HelloReply(message='Hello again, %s!' % request.name)
def serve():
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
helloworld_pb2_grpc.add_GreeterServicer_to_server(Greeter(), server)
server.add_insecure_port('[::]:50051')
server.start()
server.wait_for_termination()
サーバ起動
$ python grpc/examples/python/helloworld/greeter_server.py
Postman の操作
新規gRCP リクエスト作成
"File" -> "New..." -> "gRPC Request"
リクエストの設定
- gRPC サーバーのアドレスをURL バーに入力
localhost:50051
- Protobuf (.proto)のインポート
"Choose a way to load services and method:" -> "More ways..." -> "Import protobuf fefinition from local file" ->grpc/examples/protos/helloworld.proto
をインポート
- Name: なんでもよい
- Version Name: なんでもよい(例1.0.0)
テスト
-
Invoke
でリクエストを送信
"Hello, !"がレスポンスとして返る。
-
Message を送信
Protobuf で定義したrequest message を送信。ちなみに、インポートしたProtobuf でmessage をオートコンプリートしてくれる。また、Generate Example Metadata
でmessage を自動生成する機能もある。"Hello,<name>!"がレスポンスとして返る。
message
{
"name": "hogehoge"
}
- Method を
Greeter/SayHelloAgain
に変更
今度は"Hello again, <name>!"がレスポンスとして返る。
まとめ
Postman を使うと、GUI ぽちぽちでgRPC のデバッグができるみたい、便利。
Discussion