How To Use Postman To Make GRPC Requests
August 2, 2022
gRPC is an open source remote procedure call (RPC) framework developers use to build APIs. It operates over HTTP/2 and is frequently used in the context of microservices. The gRPC protocol is often paired with Protocol Buffers (a.k.a. protobuf), a binary message format.
This site is a great source for people completely new to gRPC.
Your common debugging workflow changes when you move from JSON-based REST APIs over HTTP to inspecting binary messages over gRPC and HTTP/2. This tutorial shows you how to use Postman – a common developer tool for testing APIs – with gRPC microservices that have .proto
schemas.
Configuring Postman with a .proto
file
We will be using gRPC requests with Wasmflow hosts in these examples.
First, ensure you have the latest Postman installed. GRPC support is new and older versions won’t have these menus.
Protocol buffers require a schema, unlike JSON or YAML. That makes the messages smaller than the alternatives but it requires every client and server to know the schema beforehand. That’s where .proto
files come in. A .proto
file is a language-agnostic description of the services and schemas in your API. Code generators use .proto
files to automatically create code the code for your API. You’ll need your .proto
file to set Postman up to communicate with your service.
We’re using the “wasmflow.proto” definition found here.
When you have your .proto
file, open Postman, hit New
and then gRPC Request
.
Then click into the field with the text Select a method
and choose Import a .proto file
.
Select your .proto
file or the tutorial’s wasmflow.proto
. Hit next and enter a name + version.
Congrats! You should now be able to make API calls.
How to make gRPC Requests in Postman
All wasmflow
hosts can be configured to expose a gRPC service to invoke components, query statistics, or get the list of running components. We will invoke the list
component on a local wasmflow host. Our sample list
component takes no input and returns a list of simple objects.
Fill out the server URL and select a method. Your URL should include the port your application is running on and the method in the drop-down menu should be invoke
for our Wasmflow host.
Enter the following JSON in the message field. This message format is Wasmflow specific so remember to modify it if you are using your own service. If you are testing your own Wasmflow components, remember to change the target
of your message to refer to your component and add a payload
field if your component accepts inputs.
{
"origin": "wafl://test.client/",
"id": "6530adb5-aa1e-4694-879c-b8dc6dd2e58c",
"target": "wafl://__local__.coll/list",
"tx_id": "6530adb5-aa1e-4694-879c-b8dc6dd2e58f"
}
Hit invoke and you should see request and response output in the Postman console.