Soy nuevo en node.js y lo expreso y he estado experimentando con ellos por un tiempo. Ahora estoy confundido con el diseño del marco expreso relacionado con el análisis del cuerpo de la solicitud. De la guía oficial de expreso:Node.js expresa el uso correcto de bodyParser middleware
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(logErrors);
app.use(clientErrorHandler);
app.use(errorHandler);
Después de configurar todo el middleware, a continuación, añadimos la ruta que queremos manejar:
app.post('/test', function(req, res){
//do something with req.body
});
El problema con este enfoque es que todo cuerpo de la petición se analizará primero antes de verificar la validez de la ruta. Parece muy ineficiente analizar el cuerpo de solicitudes inválidas. Y aún más, si nos permiten el procesamiento de carga:
app.use(express.bodyParser({uploadDir: '/temp_dir'}));
cualquier cliente puede bombardear el servidor mediante la subida de los archivos (mediante el envío de solicitud para cualquier ruta/trayectoria !!), todo lo cual será objeto de tratamiento y se mantiene en el '/ temp_dir'. ¡No puedo creer que este método predeterminado esté siendo ampliamente promocionado!
Podemos utilizar, por supuesto, la función bodyParser la hora de definir la ruta:
app.post('/test1', bodyParser, routeHandler1);
app.post('/test2', bodyParser, routeHandler2);
o incluso tal vez analizar el cuerpo de cada función que se encargan de la ruta. Sin embargo, esto es tedioso de hacer.
¿Hay alguna forma mejor de usar express.bodyParser para todas las rutas válidas (definidas) solamente, y para usar la capacidad de manejo de carga de archivos solo en rutas seleccionadas, sin tener que repetir muchas veces el código?
Wow, upvote para reconsiderar su respuesta desde hace más de un año para incluir desarrollos recientes RE: 'bodyParser' –
"código Principiante para ayudarle a obtener el maldito trabajo el día 1 y el código de producción que sea eficiente y seguros son a menudo muy diferentes ". Amén. –