Making HTTP(S) calls from the application is very common requirement. Node.JS world offers lots of options about how to implement it, or better to say - which package to use.
Native solution
Request package
It does not support Promises so if we need to wrap it into a Promise ourselves...something like:
/**
* Function which fetches http response asynchronously.
* It is implemented as a simple Promise wrapper around request API.
* @param url Request URL.
*/
function fetchData(url: string): Promise<string> {
return new Promise((resolve, reject) => {
if (!url) {
reject(ErrorFactory.createInvalidArgumentError("url"));
}
request(url, (error: any, response: request.Response, body: any) => {
if (error) {
reject(error);
} else {
if (response) {
console.log("statusCode: ", response.statusCode);
if (body) {
resolve(body);
} else {
reject(ErrorFactory.createFalsyObjectError("body"));
}
} else {
reject(ErrorFactory.createFalsyObjectError("response"));
}
}
});
});
}
Request package with native promises
node-fetch package
window.fetch API for Node.js
Axios package
Promise based HTTP client for the browser and node.js
Some References
Conclusion
I've been looking solutions which support Promises. node-fetch seems to be traditional approach and Axios seems to be very popular among developers now.
No comments:
Post a Comment