
murvinlai
Aquí está mi formulario simple:
<form id="loginformA" action="userlogin" method="post">
<div>
<label for="email">Email: </label>
<input type="text" id="email" name="email"></input>
</div>
<input type="submit" value="Submit"></input>
</form>
Aquí está mi Express.js/Node.js código:
app.post('/userlogin', function(sReq, sRes){
var email = sReq.query.email.;
}
Lo intenté sReq.query.email
o sReq.query['email']
o sReq.params['email']
, etc. Ninguno de ellos funciona. todos regresan undefined
.
Cuando cambio a una llamada Get, funciona, así que… ¿alguna idea?

anteamor
expreso v4.17.0
app.use(express.urlencoded( {extended: true} ))
app.post('/userlogin', (req, res) => {
console.log(req.body) // object
var email = req.body.email;
}
express.urlencoded
Formulario de demostración
Otra respuesta relacionada
Dada alguna forma:
<form action='/somepath' method='post'>
<input type="text" name="name"></input>
</form>
Usando expreso
app.post('/somepath', function(req, res) {
console.log(JSON.stringify(req.body));
console.log('req.body.name', req.body['name']);
});
Producción:
{"name":"x","description":"x"}
req.param.name x

Shivam Jha
Actualizar
A partir de Express version 4.16+
su propia implementación de analizador de cuerpo ahora se incluye en el paquete Express predeterminado, por lo que no es necesario que descargue otra dependencia.
Es posible que haya agregado una línea a su código similar a la siguiente:
app.use(bodyparser.json()); //utilizes the body-parser package
Si está utilizando Express 4.16+, ahora puede reemplazar esa línea con:
app.use(express.json()); //Used to parse JSON bodies
Esto no debería introducir ningún cambio importante en sus aplicaciones, ya que el código de express.json() se basa en bodyparser.json().
Si también tiene el siguiente código en su entorno:
app.use(bodyParser.urlencoded({extended: true}));
Puedes reemplazar eso con:
app.use(express.urlencoded()); //Parse URL-encoded bodies
Una nota final de precaución: todavía hay algunos casos muy específicos en los que body-parser
todavía podría ser necesario, pero en su mayor parte Express
La implementación de body-parser es todo lo que necesitará para la mayoría de los casos de uso.
(Consulte los documentos en expressjs/parser corporal para más detalles).

AYUDA
desde oficial versión 4 del documento
const express = require('express')
const app = express()
app.use(express.json());
app.use(express.urlencoded({ extended: true }))
app.post('/push/send', (request, response) => {
console.log(request.body)
})
SEGURIDAD: todo el mundo usando
bodyParser()
de las respuestas aquí también debería leer la respuesta de @SeanLynch a continuación– FelipeAls
24 de noviembre de 2013 a las 20:06