Tools to send ReST requests

Summary

In my first blog entry I compare different tools to send ReST requests

Most of the tools are not only ReST requester, I only have a look at this feature. The tools provide much more functionality (i.e. JMeter is usually used for load-tests; sending ReST requests is only a small part of it)

Background

At work I develop a backend software, that provides a ReST interface. Sometimes I have to manually send ReST requests to simulate incoming data, i.e. in the sprint review. At the beginning most of the requests were quite similar, so I used a simple firefox plugin called HttpRequester. In the meanwhile our ReST interface and the backend got more and more complex, which made it much more uncomfortable to manage the requests and the environments.

After the latest firefox update, the HttpRequester doesn’t work at all so I have to find a different tool, that should make my work easier.

Overview

RequirementInsomniaPostmanJMeterSoapUI
Save requestsYesYesYesYes
Manage different environments seperated from the requestsYesYesNo
But there are different possibilities to do something similar, i.e. with properties
Yes

Environments (only in Pro-Version)

Properties
Use variables in request payloadYesYesYesYes
Properties
Use functions in request payloadYes
Nunjucks
Experimental
Dynamic variables
Yes
Functions
Yes
Dynamic properties
Send a chain of dependent requests (Part of a response is used for a following request)No
But planned
Yes
Documentation
Yes
JMeter Wiki
Yes
Property Transfer
Usability+++00

The requirements in detail

Save requests

Because I had to send more or less a couple of requests over and over again, it should be possible to save the requests for the next time.

Manage different environments separated from the requests

We have different environments where our backend is installed (Nightly, Sprintly, local developer machine,…) and I have to send requests to all of these systems. The only difference is the base URL. So I was looking for the possibility to manage these base URLs seperated from the requests and just select one of them when sending the requests.

Use variables in request payload

I have to send different requests for the same resource, so I needed a possibility to store values in centralized variables, that are used in the requests.

Use functions in request payload

In some cases I wanted to have calculated data in the request payload. First of all I wanted to have current timestamps and also random data.

The tools provide quite different possibilities which functions can be used. So I don’t want to describe everything in detail, but unfortunatally setting the current timestamp only worked with JMeter.

Send a chain of dependent requests

Some of my requests depend on each other. This means, values of a response are needed in the payload of a following request. In my case, it is a generated id, that is used as a foreign key in the next request. Parsing the response and setting these values automatically would help me a lot.

Usability

I have to change the requests regularly. The changes are quite small, so I need a good usability.

For me, Insomnia and Postman were quite good and intiutive. For JMeter and SoapUI I had to read a lot of documentation to have everything in a clear structure.

Result

Unfortunatally there was no tool that fullfills all my requirements, is intuitive and has a good usability. So writing an own application exspecially for me would be the perfect solution.

But I liked Insomnia. quite a lot and I will use it from now on, although I have to do some things manually.

Postman is quite similar to Insomnia, but the UI was a little bit worse for me.

JMeter and SoapUI are quite good tools for many things. But they are complex and you have to read a lot of documentation before you get what you want.

Leave a Reply

Your email address will not be published. Required fields are marked *