EreminD
@EreminD
Кое-что умею

Как правильно написать промежуточный обработчик?

Добрый день. Смотрю вот сюда и делаю, как сказано, но что-то не так
Идея в том, что есть два маршрута [get] /:id и [get] /new/*
Нужно написать промежуточный обработчик, чтобы для обоих маршрутов логировался запрос
Пока пришел в к такому коду:
app.use(function (req, res, next) {
  console.log(new Date().toLocaleString('ru', options));
  console.log(req.originalUrl);
  console.log(req.params);
  console.log(JSON.stringify(req.body) || '-nobody');
  console.log('--------------------------------------');
  next();
});

app.get('/new/*', function(req, res){  
       console.log('1');
}) 

app.get('/:id', function(req, res){
    var id = req.params.id;
    if(id in list){
        console.log(list[id]);
        if (list[id].match('http')) { res.redirect(301, list[id]) }
        else                        { res.redirect(301, 'http://'+list[id]) }
    }
    else{
        res.status(404).send('no such element');
    }
})


Проблема:
Логируются запросы, для маршрута app.get('/new/*')
И логируются для app.get('/:id'), но только если логика в обработчике доходит до res.status(404).send('no such element');
А если условие выполняется и я шлю редирект, запрос не логируется
Что я делаю не так?
  • Вопрос задан
  • 343 просмотра
Пригласить эксперта
Ответы на вопрос 2
@rustler2000
погромист сикраш
app.use('/',function (req, res, next) { -> app.use(function (req, res, next) {
Ответ написан
@Coder321
middleware работают по порядку, вы уверены что те роуты куда вы редиректите находятся после логера?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы