paw! an awesome http client

For the past few years, I have implemented multiple various RESTful HTTP APIs, and I wouldn’t be able to imagine myself interacting with these APIs without a good HTTP client. You might be familiar with some command line tools like cURL or HTTPie (cURL-like tool for humans). But then, there also are GUI HTTP clients, to name few Postman or Insomnia. In this post, I wanted to share with you an HTTP client I’m using almost every day for interacting with APIs. More than a year ago I came across this awesome HTTP client called Paw which unfortunately is available only on macOS.

Let me name a few things that I absolutely love about Paw!

Projects

This feature allows me to be productive as I don’t have to waste my time scrolling through hundreds of folders to find the project I’m looking for. Not only that but also this allows me to separate work related projects from my personal projects.

Request variables

You can specify request variables to avoid updating URL string every time you need to change some query parameter value. It’s pretty cool that it’s possible to modify all query variables from the request description screen, where for each request variable you can specify the variable type and include a description, which allows me to document each request. Also, it’s possible to add variable constraints to match a specific regular expression, enum values and specific length. request variables

Extensions

This is one of the main Paw features that makes this HTTP client so great. It’s possible to generate UUIDs, random person first and last names, emails, random sentences. Besides these mentioned you can add more dynamic value extensions, or if you need something specific, you can build one yourself and simply use it. extensions

These are only few features that makes Paw a truly advanced HTTP client. Few other features worth mentioning:

  • code snippet generation with various programming language support
  • export requests to Postman, Swagger and many other formats
  • response filtering
  • disable selected headers, URL parameters
  • cloud based, access your projects from multiple machines
  • snapshot projects (uses git)
  • project encryption
  • the dark theme ;)

What’s missing?

Surely, nothing is perfect and I guess it’s okay as everything evolves with time. As I find myself working more and more with gRPC APIs, the ability to specify gRPC service proto definition & to make requests to gRPC endpoints would be a truly awesome and helpful feature.
Another cool feature that I can think of could be some sort of test extension/plugin which would allow executing specific requests over a specified time period to see your API performance under a high volume of requests and possibly to catch some hard to catch edge cases.
JSON Response filtering also could be improved. In cases when you get a list of objects in the response, filtering by the selected object property and displaying all its properties would be amazing.
Lastly, some sort of response objects diff tool also could come handy which would allow to identify what exactly changed since the last request.