¿Qué hace exactamente body-parser con express.js y por qué lo necesito?

En breve; body-parser extrae la parte completa del cuerpo de una secuencia de solicitud entrante y la expone en req.body como algo más fácil de interactuar. No lo necesitas per se, porque puedes hacer todo eso tú mismo. Sin embargo, lo más probable es que haga lo que quiera y le ahorrará el problema.


Para ir un poco más en profundidad; body-parser le proporciona un middleware que utiliza nodejs / zlib para descomprimir los datos de la solicitud entrante si está comprimido y stream-utils / raw-body para esperar el contenido completo y sin procesar del cuerpo de la solicitud antes de “analizarlo” (esto significa que si no ibas a usar el cuerpo de la solicitud, solo perdiste algo de tiempo).

Después de tener el contenido en bruto, body-parser lo analizará utilizando una de las cuatro estrategias, dependiendo del middleware específico que haya decidido utilizar:

  • bodyParser.raw (): en realidad no analiza el cuerpo, sino que simplemente expone el contenido almacenado anteriormente de un Buffer en req.body .
  • bodyParser.text (): lee el búfer como texto sin formato y expone la cadena resultante en req.body .
  • bodyParser.urlencoded (): analiza el texto como datos codificados en URL (que es cómo los navegadores tienden a enviar datos de formularios desde formularios regulares establecidos en POST) y expone el objeto resultante (que contiene las claves y los valores) en req.body . Para comparacion; en PHP todo esto se hace automáticamente y se expone en $_POST .
  • bodyParser.json (): analiza el texto como JSON y expone el objeto resultante en req.body .

Solo después de configurar req.body con los contenidos deseables, llamará al siguiente middleware en la pila, que luego puede acceder a los datos de la solicitud sin tener que pensar en cómo descomprimirlo y analizarlo.

body-parser hace lo que dice: analiza el cuerpo de la solicitud HTTP. Esto generalmente es necesario cuando necesita saber más que solo la URL que está siendo golpeada, más específicamente en el contexto de una solicitud HTTP POST, PATCH o PUT donde la información que desea está contenida en el cuerpo.

El uso de body parser le permite acceder a req.body desde sus rutas y utilizar esos datos, por ejemplo, para crear un usuario en una base de datos.

Muchos marcos distintos de Express tienen esta funcionalidad incorporada en la biblioteca, Express es el marco minimalista que es, tiene esto como un módulo de middleware separado.

Espero que esto lo explique de manera satisfactoria.

Intentemos mantener esto menos técnico.

Supongamos que está enviando datos de un formulario html al servidor node-js, es decir, realizó una solicitud al servidor. El archivo del servidor recibiría su solicitud bajo un objeto de solicitud. Ahora, por lógica, si la consola registra este objeto de solicitud en el archivo del servidor, debería ver los datos de su formulario en algún lugar, que podrían extraerse en ese momento, pero ¡vaya! en realidad no lo haces!

Entonces, ¿dónde están nuestros datos? ¿Cómo lo extraeremos si no solo está presente en mi solicitud?

Una explicación simple de esto es que http envía los datos de su formulario en bits y piezas que están destinados a ensamblarse a medida que llegan a su destino. Entonces, ¿cómo extraerías tus datos?

Aquí se describe una forma real: cómo funciona bodyParser () – Adam Zerner – Medium

Pero, ¿por qué tomar esta molestia de analizar cada vez manualmente sus datos para trozos y ensamblarlos? Use algo llamado “analizador de cuerpo” que haría esto por usted.

body-parser analiza su solicitud y la convierte a un formato desde el cual puede extraer fácilmente la información relevante que pueda necesitar.

Por ejemplo, supongamos que tiene un formulario de registro en su interfaz. Lo está completando y solicita al servidor que guarde los detalles en alguna parte.

Extraer el nombre de usuario y la contraseña de su solicitud es tan simple como a continuación si usa body-parser.

…………………………………………………….

var loginDetails = {

nombre de usuario: request.body.username,

contraseña: request.body.password

};

…………………………………………………….

Básicamente, body-parser analizó su solicitud entrante, reunió los fragmentos que contienen los datos de su formulario, luego creó este objeto de cuerpo para usted y lo completó con sus datos de formulario.

Y lo acabas de usar.

¡La vida se hizo fácil!

El módulo body-parser proporciona middleware para analizar JSON, texto sin formato o simplemente devolver un objeto Buffer procesar para que lo maneje según sea necesario.

Instalación:

$ npm install body-parser

API:

var bodyParser = require (‘body-parser’)