AI Workshop: learn to build apps with AI →
HTTP and Networking: Make an HTTP POST request using Node

Join the AI Workshop and learn to build real-world apps with AI. A hands-on, practical program to level up your skills.


There are many ways to perform an HTTP POST request in Node, depending on the abstraction level you want to use.

The simplest way to perform an HTTP request using Node is to use the Axios library:

const axios = require('axios')

axios
  .post('/todos', {
    todo: 'Buy the milk',
  })
  .then((res) => {
    console.log(`statusCode: ${res.statusCode}`)
    console.log(res)
  })
  .catch((error) => {
    console.error(error)
  })

Another way is to use the Request library:

const request = require('request')

request.post(
  '/todos',
  {
    json: {
      todo: 'Buy the milk',
    },
  },
  (error, res, body) => {
    if (error) {
      console.error(error)
      return
    }
    console.log(`statusCode: ${res.statusCode}`)
    console.log(body)
  }
)

The two approaches above require the use of a 3rd party library.

You can make a POST request using only the Node built-in modules, although it’s more verbose than the two preceding options:

const https = require('https')

const data = JSON.stringify({
  todo: 'Buy the milk',
})

const options = {
  hostname: 'yourwebsite.com',
  port: 443,
  path: '/todos',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length,
  },
}

const req = https.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`)

  res.on('data', (d) => {
    process.stdout.write(d)
  })
})

req.on('error', (error) => {
  console.error(error)
})

req.write(data)
req.end()

Lessons in this unit:

0: Introduction
1: Run a web server from any folder
2: HTTP requests in Node using Axios
3: ▶︎ Make an HTTP POST request using Node
4: Making HTTP requests with Node
5: Get HTTP request body data using Node
6: Serve an HTML page using Node.js
7: Using WebSockets with Node.js