Obtener datos del cuerpo de la solicitud HTTP usando Node

Descubra cómo extraer los datos enviados como JSON a través de un cuerpo de solicitud HTTP usando Node

Así es como puede extraer los datos que se enviaron comoJSONen el cuerpo de la solicitud.

Si está usando Express, eso es bastante simple: use elbody-parserMódulo de nodo.

Por ejemplo, para obtener el cuerpo de esta solicitud:

const axios = require('axios')

axios.post(’/todos’, { todo: ‘Buy the milk’, })

Este es el código del lado del servidor correspondiente:

const bodyParser = require('body-parser')

app.use( bodyParser.urlencoded({ extended: true, }) )

app.use(bodyParser.json())

app.post(’/endpoint’, (req, res) => { console.log(req.body.todo) })

Si no está utilizando Express y quiere hacer esto en Vanilla Node, necesita hacer un poco más de trabajo, por supuesto, ya que Express abstrae mucho de esto por usted.

La clave para entender es que cuando inicializa el servidor HTTP usandohttp.createServer(), se llama a la devolución de llamada cuando el servidor obtuvo todos los encabezados HTTP, pero no el cuerpo de la solicitud.

losrequestEl objeto pasado en la devolución de llamada de conexión es unArroyo.

Por lo tanto, debemos escuchar para que se procese el contenido del cuerpo, y se procesa en trozos.

Primero obtenemos los datos escuchando la transmisióndataeventos, y cuando los datos terminan, la transmisiónendse llama al evento, una vez:

const server = http.createServer((req, res) => {
  // we can access HTTP headers
  req.on('data', (chunk) => {
    console.log(`Data chunk available: ${chunk}`)
  })
  req.on('end', () => {
    //end of data
  })
})

Entonces, para acceder a los datos, asumiendo que esperamos recibir una cadena, debemos ponerla en una matriz:

const server = http.createServer((req, res) => {
  let data = []
  req.on('data', (chunk) => {
    data.push(chunk)
  })
  req.on('end', () => {
    JSON.parse(data).todo // 'Buy the milk'
  })
})

Descarga mi gratisManual de Node.js


Más tutoriales de nodos: