Making an API call in NodeJS
There are many ways available to send HTTP request or make a REST API call during acceptance testing:
1. HTTP - The standard library
- default HTTP module in the standard Node.js library.
- No need to install any external dependency.
- It is NOT very user-friendly compared to other solutions.
- It does not parse the response data manually.
- It does not support HTTPS by default, so you need to require the https module instead if required.
2. Request - Simplified HTTP client
- An easy to use library that deals with HTTP requests
- For promise handling, use Bluebird or switch to request-promise library
- This helper use unirest to perform requests.
- Provides easy to understand DSL
4. Unirest
- Lightweight HTTP Request Client library
- Provides a cookie jar to store multiple cookies
5. Axios
-
This is a promise based HTTP client for the browser and node.js
-
Make XMLHttpRequests from the browser
-
Make http requests from node.js
-
Supports the Promise API
-
Intercept request and response
-
Transform request and response data
-
Cancel requests
-
Automatic transforms for JSON data
-
Client-side support for protecting against XSRF
-
The request contains the following information:
data: ,status, statusText, headers, config (the config that was provided to axios with request), request.
Resources:
Getting started with axios tutorial
6. node-fetch
- A light-weight module that brings window.fetch to node.js
- Stay consistent with window.fetch API.
- Use native promise, but allow substituting it with other popular promise libraries like Bluebird
- Use native Node streams for body, on both request and response.
- Useful extensions such as timeout, redirect limit, response size limit, explicit errors for troubleshooting.
- Simplified HTTP request client 'request' with Promise support. Powered by Bluebird.
- request-promise wraps around request so everything that works with request also works with request-promise
8. SuperAgent
- Makes AJAX requests from the browser
- Make http requests from node.js
- Provides a function
query()
to add parameters to the request. - It parses the JSON response automatically.
Cookie Handling:
References:
https://www.twilio.com/blog/2017/08/http-requests-in-node-js.html
https://codeburst.io/how-to-make-an-http-request-in-nodejs-http-mechanism-libraries-f25ec990d307
Why use Promise Libraries while Node.js has added native support for promises?
Learning Promises: https://scotch.io/tutorials/javascript-promises-for-dummies