Thunder Client — lightweight alternative to Postman

How Postman led me to create my own API Client called Thunder Client Extension for VS Code.

I work for my own project localmint.com, where I need to update the location data regularly, which involves dealing with lot of Crawlers & APIs. I was using Postman to test APIs from last few years, But recently for each update the Postman desktop client is becoming slow to load and confusing UI.

So I started looking for other clients, which I found requires multiple clicks to make a simple api request and has complex UI. Then I searched the Visual Studio Code extension gallery and found REST Client extension which is popular but not a GUI based client. So I finally decided to create my own API client.

Since I use Visual Studio Code regularly for development, So i decided to develop an extension instead of separate software to download, and also there are millions of users who already use VS Code. I have set the following design targets for the new extension

Extension Design Goals

  • Lightweight API Client
  • Simple, Clean & Easy to use UI
  • Handle Large Responses & View in Full Screen
  • Support VS Code Themes
  • Collections & Environment Variables
  • Scriptless Testing

Development

I started initial research on how to use VS Code api to develop an extension for couple of days and then started developing the software. Finally able to complete the development of Extension with the above target functionality. below is the screenshot of the extension

Thunder Client Extension

Technology

The tech used to develop the VS Code extension are Javascript, Flexbox, Typescript, Ace Editor, Got, Nedb. No javascript or bootstrap frameworks used.

Scriptless Testing

I noticed we need to write lot of boilerplate code in Postman and other clients to do basic testing using scripting like status code equal 200. So I implemented GUI based tests, where you can select couple of dropdowns to do most standard tests very easily without any scripting knowledge. Below is the screenshot of tests.

  • (Update) Set Environment Variable from the api response in Tests tab is possible now, please see github page for details.
Thunder Client Testing

The 5 test cases in the above screenshot took only few seconds to write, thats how easy it is to do testing in Thunder Client.

The same tests to do in scripting takes lot of time and knowledge of chai scripting is needed. Below is the code needed to do same tests in Postman. i have to do google search to find syntax for some tests.

// status code test
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);});// property check
pm.test("Property message contains Thunder Client", function () {
var jsonData = pm.response.json(); pm.expect(jsonData.message).to.contains("Thunder Client");});// response content-type check
pm.test("Content-Type contains application/json", function () {
pm.response.to.be.header("Content-Type", "application/json");});

Script based tests still useful in advanced scenarios but for standard tests too much overkill.

Extension Links

Feedback

Please download the extension and let me know what you like or any feedback. To report any bugs or feature requests visit the github support page.

Contact

You can reach me on Linkedin or Twitter

Founder of http://www.localmint.com - Think big, Start small