How to make HTTP requests in nodejs?

Table of Contents

v01: Basics

Source code in https://github.com/mertnuhoglu/study/tree/master/js/ex/study_http_requests_in_nodejs/

HTML page:

mkdir -p ex/study_http_requests_in_nodejs && $(cd $_ && npm init -y && pnpm i parcel-bundler request)
mkdir -p ex/study_http_requests_in_nodejs/src && touch ex/study_http_requests_in_nodejs/src/index.js

Edit ex/study_http_requests_in_nodejs/src/index.js:

const request = require('request');
request('http://jsonplaceholder.typicode.com/users/1', function (error, response, body) {
  console.log('error:', error);
  console.log('statusCode:', response && response.statusCode);
  console.log('body:', body);
});
node ex/study_http_requests_in_nodejs/src/index.js | sed -n '1,6 p'
  ##> error: null
  ##> statusCode: 200
  ##> body: {
  ##>   "id": 1,
  ##>   "name": "Leanne Graham",
  ##>   "username": "Bret",

v02: Use ES6 Promise

cd ex/study_http_requests_in_nodejs && pnpm i --save request-promise-native && touch ex/study_http_requests_in_nodejs/src/index02.js
var request = require('request-promise-native');
request('http://jsonplaceholder.typicode.com/users/1').
  then( html => console.log('body:', html) ).
  catch( err => console.log('error:', err) );
node ex/study_http_requests_in_nodejs/src/index02.js | sed -n '1,6 p'
  ##> body: {
  ##>   "id": 1,
  ##>   "name": "Leanne Graham",
  ##>   "username": "Bret",
  ##>   "email": "Sincere@april.biz",
  ##>   "address": {

v03: Use JSON Response Data

Edit ex/study_http_requests_in_nodejs/src/index03.js:

...
request('http://jsonplaceholder.typicode.com/users/1').
  then( json => console.log(JSON.parse(json).company))
node ex/study_http_requests_in_nodejs/src/index03.js