Мне нужно было написать middleware для проверки размера POST body, если он больше какого-то значения, вернуть ошибку, в другом случае пойти дальше.
Я написал вот такую функцию:
function middleware(len = 10) {
return (req, res, next) => {
req.len = 0;
req.on('data', function(chunk) {
req.push(chunk);
req.len += chunk.length;
if (req.len > len) {
res.write('Error');
res.end();
}
});
req.on('end', function() {
if (req.len <= len) {
next();
}
});
};
}
app.use(middleware(10))
app.post('/',(req,res)=>{res.end('It works'))
Теперь если запустить
curl http://host -d var=foo
То он отобжражает It works, а если запустить
curl http://host -d var=SomeBigVar00000000000000000
то отображает ошибку. Вроде все нормально, но если между первым `app.use` и `app.post` добавить `app.use(bodyParser.urlencoded());` для парсинга body, то этот middleware не работает.
Как сделать так чтобы он заработал?