Las cosas han cambiado una vez más a partir de Express 4.16.0 , ahora puede usar express.json()
y express.urlencoded()
al igual que en Express 3.0 .
Esto fue diferente a partir de Express 4.0 a 4.15 :
$ npm install --save body-parser
y entonces:
var bodyParser = require('body-parser')
app.use( bodyParser.json() ); // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({ // to support URL-encoded bodies
extended: true
}));
El resto es como en Express 3.0 :
En primer lugar, debe agregar algún middleware para analizar los datos de publicación del cuerpo.
Agregue una o ambas de las siguientes líneas de código:
app.use(express.json()); // to support JSON-encoded bodies
app.use(express.urlencoded()); // to support URL-encoded bodies
Luego, en su controlador, use el req.body
objeto:
// assuming POST: name=foo&color=red <-- URL encoding
//
// or POST: {"name":"foo","color":"red"} <-- JSON encoding
app.post('/test-page', function(req, res) {
var name = req.body.name,
color = req.body.color;
// ...
});
Tenga en cuenta que express.bodyParser()
no se recomienda el uso de .
app.use(express.bodyParser());
...es equivalente a:
app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());
Existen problemas de seguridad express.multipart()
, por lo que es mejor agregar explícitamente soporte para los tipos de codificación específicos que necesita. Si necesita una codificación multiparte (por ejemplo, para admitir la carga de archivos), debería leer esto .
bodyParser()
respuestas aquí también deben leer la respuesta de @SeanLynch a continuación