Я новичок в node.js и выражаю и экспериментирую с ними некоторое время. Теперь я путаюсь с дизайном экспресс-структуры, связанной с разбором тела запроса. Из официального руководства экспресс:
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(logErrors);
app.use(clientErrorHandler);
app.use(errorHandler);
После настройки всего промежуточного программного обеспечения мы добавим маршрут, который мы хотим обработать:
app.post('/test', function(req, res){
//do something with req.body
});
Проблема с этим подходом заключается в том, что все тела запроса будут проанализированы до проверки проверки маршрута. Кажется, очень неэффективно разбирать тело недействительных запросов. И даже более того, если мы включим обработку загрузки:
app.use(express.bodyParser({uploadDir: '/temp_dir'}));
Любой клиент может бомбардировать сервер, загружая любые файлы (отправив запрос ЛЮБОЙ маршрут/путь!), все, что будет обрабатываться и храниться в '/temp_dir'. Я не могу поверить, что этот метод по умолчанию широко пропагандируется!
Мы можем, конечно, использовать функцию bodyParser при определении маршрута:
app.post('/test1', bodyParser, routeHandler1);
app.post('/test2', bodyParser, routeHandler2);
или даже, возможно, проанализировать тело в каждой функции, которая обрабатывает маршрут. Однако это утомительно.
Есть ли лучший способ использовать express.bodyParser для всех допустимых (определенных) маршрутов и использовать возможность загрузки файлов только на выбранных маршрутах, не имея много повторений кода?