Como funciona o BodyParser()
Baixo da Capota
Ok Adam, basta com o BS. Eu entendo como funciona o Middlware. Mas quando eu não uso o bodyParser e faço o logout do objeto
req
, eu simplesmente pego essa coisa enorme e não consigo encontrar meus dados em lugar algum. Eu entendo como um middlware poderia fazer algo comoreq.body = constructBody(req.data)
, mas não consigo encontrarreq.data
!!
Se você está fazendo essa pergunta, você veio ao lugar certo! Isso também me confundiu por um tempo. Se você é como eu, este é o tipo de coisa que você não pode “simplesmente aceitar”. Eu poderia aceitar que se os dados estiverem lá, você poderia fazer algum tipo de manipulação para conseguir req.body
. Eu não tenho que entender exatamente o que são essas manipulações. Mas se os dados nem sequer estão lá, como diabos você pode executar as manipulações e obter req.body
?!!
Deixe-me mostrar-lhe.
A resposta curta é que funciona algo assim:
app.use(function( req, res, next ) {
var data = '';
req.on('data', function( chunk ) {
data += chunk;
});
req.on('end', function() {
req.rawBody = data;
console.log( 'on end: ', data )
if (data && data.indexOf('{') > -1 ) {
req.body = JSON.parse(data);
}
next();
});
});
A resposta longa é que você tem que entender os fluxos. Para entender os streams, você tem que entender que a informação é enviada pela internet através de pacotes.