Great news! Yaak now speaks gRPC, adding yet another tool to the toolkit of REST and GraphQL.
That’s not all you get today though. Be sure to stay ’till the end of the changelog so you don’t miss the other goodies that came along for the ride.
gRPC is a performance-focused RPC framework, mostly used for internal communication in microservice architectures. There’s actually 4 types of gRPC calls, all of which are supported in this release of Yaak.
Unlike text-based formats like JSON or XML, gRPC uses binary protocol buffers (protobuf), making it faster to encode and decode, and more compact. The downside is that humans like you and me can’t read or write protobuf messages, making manually debugging difficult. This is where Yaak comes in.
To construct a protobuf message Yaak must know the correct structure. For servers with
reflection enabled,
Yaak will automatically fetch the type descriptions. 🪄 Otherwise, you’ll be prompted to
select the *.proto
definitions manually.
Like GraphQL, these definitions provide autocomplete and linting to help construct message bodies. To get around the binary format, messages are defined in JSON, which getsn converted to protobuf behind the scenes. Cool, right? gRPC, as easy as JSON.
gRPC uses HTTP/2 for transport so, naturally, also supports standard authentication techniques like Basic Auth and Bearer tokens.
Metadata is also supported and is sent via HTTP/2 headers on the initial client request. Yaak will also show the response metadata from the initial server response, as well as the trailers (like headers, but at the end) on connection close.
There’s a lot to cover with gRPC, and Yaak doesn’t support everything yet. Two notable missing features are:
Be sure to submit some Feedback if you require these and so they can be prioritized.
It’s been amazing to see all the feedback, bugs, and feature requests coming in! Yaak is clearly striking a chord with many of you, so let’s keep it coming!
Here’s the full list of changes in this release, linked to the original feedback items where applicable.
Environments are great for defining things like authentication tokens that differ between
development and production. However, sometimes you only need one environment or have
something like user_role
that has the same value no matter which environment.
Now you can define variables in a global environment any use them anywhere, independent of which “sub environment” is active. Note that conflicting variables within sub-environments will get priority.
Inspired by the wonderful JetBrains IDEs, you can start typing in any dropdown menu to
filter. This came about because the CmdOrCtrl+N
hotkey now opens the “create” menu
instead of creating a new HTTP request. Simply type a few characters to select between
HTTP, GraphQL, gRPC, or folder, and continue on your way.
Yet another step towards ditching the mouse 🤘🐭
Also don’t worry, HTTP is still the first option so you can simply hit Enter to quickly create a new HTTP request like before.