Node.js expressa o uso correto do middleware bodyParser
Eu sou novo em node.js e express e tenho experimentado com eles por um tempo. Agora estou confuso com o design do framework expresso relacionado à análise do corpo da solicitação. Do guia oficial do expresso:
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(logErrors);
app.use(clientErrorHandler);
app.use(errorHandler);
Depois de configurar todo o middleware, adicionamos a rota que queremos manipular:
app.post('/test', function(req, res){
//do something with req.body
});
O problema com essa abordagem é que todo o corpo da solicitação será analisado antes de a validade da rota ser verificada. Parece muito ineficiente analisar o corpo de solicitações inválidas. E ainda mais, se habilitarmos o processamento de upload:
app.use(express.bodyParser({uploadDir: '/temp_dir'}));
Qualquer cliente pode bombardear o servidor enviando todos os arquivos (enviando solicitação para QUALQUER rota / caminho !!), todos os quais serão processados e mantidos no '/ temp_dir'. Eu não posso acreditar que este método padrão está sendo amplamente promovido!
Podemos, claro, usar a função bodyParser ao definir a rota:
app.post('/test1', bodyParser, routeHandler1);
app.post('/test2', bodyParser, routeHandler2);
ou até mesmo analisar o corpo em cada função que manipula a rota. No entanto, isso é tedioso para fazer.
Existe alguma maneira melhor de usar express.bodyParser para todas as rotas válidas (definidas) apenas, e usar o recurso de manipulação de upload de arquivos somente em rotas selecionadas, sem ter muitas repetições de código?