@asergrisa

Как заставить работать 2 middleware вместе?

Мне нужно было написать 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 не работает.
Как сделать так чтобы он заработал?
  • Вопрос задан
  • 140 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы