No entiendo por qué necesitamos body-parser
una aplicación Express, ya que podemos obtener datos sin usar body-parser
. ¿Y qué hace realmente y cómo?
node.js
express
body-parser
jiten
fuente
fuente
req.body
req.headers
(matriz), puede leer el cuerpo del paquete http como sereq.body
explica en @CleanCrispCode y puede leer como parámetro de consulta.req.query.variable
Ayuda ya que express transforma automáticamente la solicitud en javascript objetosres.body
la secuencia completa se almacenarares.body
primero.Respuestas:
Para manejar la
HTTP POST
solicitud en Express.js versión 4 y superior, debe instalar el módulo de middleware llamadobody-parser
.body-parser
extrae la parte del cuerpo completo de una secuencia de solicitud entrante y la exponereq.body
.El middleware era parte de Express.js anteriormente, pero ahora debe instalarlo por separado.
Este
body-parser
módulo analiza los datos codificados JSON, buffer, string y URL enviados medianteHTTP POST
solicitud. Instalebody-parser
usando NPM como se muestra a continuación.editar en 2019-abril-2: en [email protected] el middleware body-parser incluido con express. para más detalles ver esto
fuente
urlencoded()
y enjson()
realidad son fábricas de middleware que devuelven una función de middleware que invocanext()
Sí, podemos trabajar sin él
body-parser
. Cuando no usa eso, obtiene la solicitud sin procesar, y su cuerpo y encabezados no están en el objeto raíz del parámetro de solicitud. Deberá manipular individualmente todos los campos.O puede usar
body-parser
, ya que el equipo express lo mantiene.Lo que body-parser puede hacer por usted: simplifica la solicitud.
Cómo usarlo: Aquí hay un ejemplo:
Instalar en pc
npm install body-parser --save
Así se usa body-parser en express:
Enlace.
https://github.com/expressjs/body-parser .
Y luego puede obtener el cuerpo y los encabezados en el objeto de solicitud raíz. Ejemplo
fuente
La respuesta aquí lo explica muy detallada y brillantemente, la respuesta contiene:
Puede consultar body-parser github para leer su documentación, contiene información sobre su funcionamiento.
fuente
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 de su servidor, debería ver los datos de su formulario en algún lugar, que podrían extraerse entonces, ¡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 partes que están destinadas a ensamblarse a medida que llegan a su destino. Entonces, ¿cómo extraerías tus datos?
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.
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.
fuente
Analiza el cuerpo de la solicitud HTTP. Esto generalmente es necesario cuando necesita saber más que solo la URL que ingresó, particularmente en el contexto de una solicitud HTTP POST o PUT PATCH donde la información que desea está contenida en el cuerpo.
Básicamente es un middleware para analizar JSON, texto sin formato o simplemente devolver un objeto Buffer sin procesar para que lo maneje según lo requiera.
fuente
Para obtener acceso a los datos de publicación que tenemos que usar
body-parser
. Básicamente, québody-parser
es lo que permite que express lea el cuerpo y luego lo analice en unJson
objeto que podamos entender.fuente
Todo esto es una cuestión de conveniencia.
Básicamente, si la pregunta fuera '¿ Necesitamos usar
body-parser
?' La respuesta es no'. Podemos obtener la misma información del cliente después de la solicitud utilizando una ruta más tortuosa que generalmente será menos flexible y aumentará la cantidad de código que tenemos que escribir para obtener la misma información.Esto es algo así como preguntar '¿ Necesitamos usar
express
para empezar?' Una vez más, la respuesta es no, y de nuevo, todo se reduce a ahorrarnos la molestia de escribir más código para hacer las cosas básicas que express viene con 'incorporado'.En la superficie:
body-parser
hace que sea más fácil obtener la información contenida en las solicitudes de los clientes en una variedad de formatos en lugar de hacer que capture los flujos de datos sin procesar y averiguar en qué formato está la información, y mucho menos analizar manualmente esa información en datos utilizables.fuente
Entendimiento del cuerpo de solicitudes
Comprender el analizador corporal
Según su documentación
Como viste en el primer ejemplo, tuvimos que analizar el flujo de solicitud entrante manualmente para extraer el cuerpo. Esto se vuelve un poco tedioso cuando hay múltiples datos de formularios de diferentes tipos. Entonces usamos el paquete body-parser que hace toda esta tarea bajo el capó.
Proporciona cuatro módulos para analizar diferentes tipos de datos.
Después de tener el analizador de cuerpo sin procesar, usará una de las estrategias anteriores (dependiendo del middleware que haya decidido usar) para analizar los datos. Puede leer más sobre ellos leyendo su documentación.
Después de configurarlo
req.body
en el cuerpo analizado, body-parser invocaránext()
para 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.fuente