From Postman to Bruno
Originally launched as a Chrome extension in 2012, Postman started as a side project by Abhinav Asthana. Over the years, Postman has become an invaluable companion for making requests and testing APIs. Postman collection and environment files has been shared countless times by developers. Postman collection was designed to be a single file containing all API requests, pre-request scripts, post-request scripts, test scripts, etc. Environment files also play a big role on development cycle making smoothly environment switches. However, maintaining a Postman collection can be challenging if holds a substantially amount of APIs in teams with more than three members. A paid plan is required to get unlimited Postman collaboration to keep Postman collection in their cloud storage. A team maintaining about fifty endpoints under free plan would struggle to keep collection up to date. Due to the distress maintaining a large Postman collection file versioned in git, it was time to look for alternatives. The most important feature in a new API Client would be git friendly and at least has same basic features Postman provides like scripts, environment configuration, etc. Bruno API Client is a relatively new API client that had its first public release in October 2022. What makes Bruno unique is its collection structure: instead of being just a single file, it’s organized like a nodejs project, with a main file surrounded by several supporting files. Each API request is saved as a file with a .bru extension. Bruno is designed with developers in mind, making it easy to integrate with Git. This means you can manage your Bruno collections through a Git repository, which really boosts collaboration among team members. You can easily install Bruno either by downloading it directly from the official website or by using a system package manager like Homebrew, apt, or Chocolatey. Bruno collection structure looks like a nodejs project making a collection collaboratively and maintainable. Environment Files In Bruno, environment files are associated with a specific collection and are stored in the environments folder, with each environment saved in its own separate file. Unlike Postman, where environment files can be shared across multiple collections, Bruno's environment files are dedicated to individual collections, ensuring a more organized and focused setup. Bruno offers a variety of environment variables, including global, environment, collection, folder, request, runtime, and process variables. Plus, it natively supports dotenv files, allowing you to store sensitive information securely on your local machine while keeping it out of version control with gitignore. This makes managing your sensitive data both easy and safe! Dotenv File Configuration To get started, simply place a .env file in the root directory of your collection. Now, let's configure an API key in the .env file! API_KEY = fd79a328afe69b0 You can use the API_KEY variable in your requests as well as in environment files by referencing it like this: {{process.env.API_KEY}} External Libraries Since Bruno collection is structured like a nodejs project, installing a new library is just a npm command away. Using an external library is required to enable developer mode. However, it would require to whitelist some modules in bruno.json file. Cheerio is a library to parse html response that requires to whitelist some of its dependencies like vm and buffer modules. Like shown below: "scripts": { "moduleWhitelist": [ "vm", "buffer" ], "filesystemAccess": { "allow": false } } Final Thoughts Bruno API Client is a valuable tool for teams that prioritize managing API client collections with a Git-first approach. Its unique features and structure make collaboration easier and more efficient, making it a great choice for developers.

Originally launched as a Chrome extension in 2012, Postman started as a side project by Abhinav Asthana. Over the years, Postman has become an invaluable companion for making requests and testing APIs. Postman collection and environment files has been shared countless times by developers.
Postman collection was designed to be a single file containing all API requests, pre-request scripts, post-request scripts, test scripts, etc. Environment files also play a big role on development cycle making smoothly environment switches.
However, maintaining a Postman collection can be challenging if holds a substantially amount of APIs in teams with more than three members. A paid plan is required to get unlimited Postman collaboration to keep Postman collection in their cloud storage. A team maintaining about fifty endpoints under free plan would struggle to keep collection up to date.
Due to the distress maintaining a large Postman collection file versioned in git, it was time to look for alternatives. The most important feature in a new API Client would be git friendly and at least has same basic features Postman provides like scripts, environment configuration, etc.
Bruno API Client is a relatively new API client that had its first public release in October 2022. What makes Bruno unique is its collection structure: instead of being just a single file, it’s organized like a nodejs
project, with a main file surrounded by several supporting files. Each API request is saved as a file with a .bru
extension. Bruno is designed with developers in mind, making it easy to integrate with Git. This means you can manage your Bruno collections through a Git repository, which really boosts collaboration among team members.
You can easily install Bruno either by downloading it directly from the official website or by using a system package manager like Homebrew, apt, or Chocolatey.
Bruno collection structure looks like a nodejs
project making a collection collaboratively and maintainable.
Environment Files
In Bruno, environment files are associated with a specific collection and are stored in the environments
folder, with each environment saved in its own separate file. Unlike Postman, where environment files can be shared across multiple collections, Bruno's environment files are dedicated to individual collections, ensuring a more organized and focused setup.
Bruno offers a variety of environment variables, including global, environment, collection, folder, request, runtime, and process variables. Plus, it natively supports dotenv files, allowing you to store sensitive information securely on your local machine while keeping it out of version control with gitignore. This makes managing your sensitive data both easy and safe!
Dotenv File Configuration
To get started, simply place a .env
file in the root directory of your collection. Now, let's configure an API key in the .env
file!
API_KEY = fd79a328afe69b0
You can use the API_KEY
variable in your requests as well as in environment files by referencing it like this:
{{process.env.API_KEY}}
External Libraries
Since Bruno collection is structured like a nodejs
project, installing a new library is just a npm
command away. Using an external library is required to enable developer mode. However, it would require to whitelist some modules in bruno.json
file.
Cheerio is a library to parse html response that requires to whitelist some of its dependencies like vm
and buffer
modules. Like shown below:
"scripts": {
"moduleWhitelist": [
"vm",
"buffer"
],
"filesystemAccess": {
"allow": false
}
}
Final Thoughts
Bruno API Client is a valuable tool for teams that prioritize managing API client collections with a Git-first approach. Its unique features and structure make collaboration easier and more efficient, making it a great choice for developers.