Body-parser en Express.js: manejo de datos en peticiones HTTP

Body-parser en Express.js: manejo de datos en peticiones HTTP

¿Qué es body-parser y para qué se utiliza?

Body-parser es una librería de Node.js que se utiliza con Express para analizar y procesar los datos de solicitudes HTTP, como JSON o datos de formulario. Permite acceder a los datos del cuerpo de la solicitud en un formato fácilmente utilizable en una aplicación Node.js.

Usualmente el cuerpo de una petición (payload), contiene información desde una petición tipo POST cuando un cliente desea crear una nueva entidad/registro o actualizar uno existente mediante PUT. Los desarrolladores quienes implementan servidores, requieren frecuentemente acceder a la información del cuerpo de dicha petición.

El módulo npm body-parser permite realizar esta tarea. No es necesario programarla. Solo se requiere instalar body-parser y habilitar json() así como url-encode como middlewares para convertir datos a JSON.

¿Cómo instalar body-parser usando npm?

Para instalar body-parser en tu proyecto de Node.js, debes seguir los siguientes pasos:

  1. Abre una terminal y navega hasta la carpeta raíz de tu proyecto.
  2. Ejecuta el siguiente comando:
$ npm install body-parser
  1. Una vez que la instalación se complete, body-parser estará listo para ser utilizado en tu proyecto.

Ten en cuenta que también debes tener instalado Node.js y npm en tu sistema antes de poder instalar body-parser.

¿Cómo instalar body-parser en mi proyecto de Node.js?

Después de instalar bodyparser dentro de tu proyecto, deberás importar el paquete en express y aplicarla como middleware.

const express = require("express");
const app = express();
const bodyParser = require("body-parser");

app.use(bodyParser.json());

app.post("/", (req, res) => {
    console.log(req.body);
    res.send("Data received");
});

Arranca tu servidor y ahora podrás enviar datos mediante curl para hacer debug.

$ curl -d '{"name:"Luis"}' http://localhost:3000 -i -H "Content-Type:application/json"

¿Cómo utilizar urlencoded en bodyparser?

En algunas ocasiones no requerimos utilizar json para enviar datos sino una variante como application/x-www-form-urlencoded. Este es especialmente útil en formularios HTML.

app.use(bodyParser.urlencoded({ extended: false }));

Extended false utiliza la librería querystring mientras que true la librería qs. La sintaxis de extended:true permite el uso de otras características como rich objects y arreglos codificados dentro del formato URL-encoded.