使用Node发出一个HTTP POST请求的方法

507 阅读1分钟

了解如何使用Node进行HTTP POST请求

在Node中执行HTTP POST请求有很多方法,这取决于你想使用的抽象级别。

使用Node执行HTTP请求的最简单方法是使用Axios库

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)
  })

另一种方法是使用Request库

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)
  }
)

到目前为止所强调的两种方式都需要使用第三方库。

仅仅使用Node标准模块就可以实现POST请求,尽管它比前面两种方式更加冗长。

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()