req parser parse node example bodyparser body node.js express post multipartform-data body-parser

node.js - parser - node express request size



Node.js(con Express y bodyParser): no puede obtener datos de formulario de la solicitud posterior (3)

Parece que no puedo recuperar los datos de formulario de una solicitud de envío enviada a mi servidor Node.js. He puesto debajo el código del servidor y la solicitud de envío (enviado usando cartero en Chrome):

Publicar solicitud

POST /api/login HTTP/1.1 Host: localhost:8080 Cache-Control: no-cache ----WebKitFormBoundaryE19zNvXGzXaLvS5C Content-Disposition: form-data; name="userName" jem ----WebKitFormBoundaryE19zNvXGzXaLvS5C

Código del servidor NodeJS

var express = require(''express''); // call express var app = express(); // define our app using express var bodyParser = require(''body-parser''); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.use(bodyParser()); app.all(''/*'', function(req, res, next) { res.header(''Access-Control-Allow-Origin'', ''*''); res.header(''Access-Control-Allow-Headers'', ''Content-Type,accept,access_token,X-Requested-With''); next(); }); var port = process.env.PORT || 8080; // set our port var router = express.Router(); // get an instance of the express Router router.get(''/'', function(req, res) { res.json({ message: ''I am groot!'' }); }); // Login router.route(''/login'') .post(function(req, res){ console.log(''Auth request recieved''); // Get the user name var user = req.body.userName; var aToken = getToken(user); res.json({ ''token'':''a_token'' }); }); app.use(''/api'', router); app.listen(port);

El método de inicio de sesión intenta obtener el req.body.userName , sin embargo, req.body siempre está vacío. He visto otros casos en SO que describen este tipo de comportamiento, pero ninguna de las respuestas relacionadas se aplicó aquí.

Gracias por ayudarnos


Asegúrese de poner en este orden: bodyParser.json () primero. app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true }));


En general, una aplicación Express necesita especificar el middleware de analizador de cuerpo apropiado para que req.body contenga el cuerpo.

[Editado]

  1. Si requirió el análisis de datos de formulario codificados en url (no multiparte), así como JSON, intente agregar:

    // Put this statement near the top of your module var bodyParser = require(''body-parser''); // Put these statements before you define any routes. app.use(bodyParser.urlencoded()); app.use(bodyParser.json());

    Primero, deberá agregar body-parser a la propiedad de dependencies de su package.json y luego realizar una npm update .

  2. Para manejar datos de formularios de varias partes, el analizador de cuerpo bodyParser.urlencoded() no funcionará. Vea los módulos sugeridos aquí para analizar los cuerpos de varias partes.