2016-07-26 4 views
1

Возможно ли в промежуточном программном обеспечении получить данные, только что отправленные моим API?Node.JS - Получать отправленные данные в конце в промежуточном программном обеспечении

Для Exemple У меня есть nodejs сервер с этим промежуточным слоем:

var middleware = function(req, res, next) { 
     res.on('finish', function() { 
      console.log(res.statusCode); // display 200 
      console.log(res.body); // display empty data 
     }); 
     next(); 
    }; 

И мой API:

app.get('/url', function(req, res) { 
     res.status(200).json({name:'john'}).end(); 
    }); 

Но в моем промежуточном слое, я только могу получить StatusCode '200', но не объект {name:'john'}.

Кто-нибудь может мне помочь?

Спасибо.

ответ

1

Добавить app.use(middleware); после маршрутизатора.

Источник:Connect or Express middleware to modify the response.body

EDIT: К сожалению, ответ я свяжу работы для старых версий Экспресс. Я прочитал Экспресс Исходный код тело не сохраняется в res, когда вызываются res.json() или res.send().

Чтобы изменить тело в Экспресс 4, вы, кажется, нужно переопределить Рез методов, или использовать пакет, который сделает это, как экспресс-маш (https://www.npmjs.com/package/express-mung).

+0

Я уже сделал это, мое промежуточное программное обеспечение отображает правильный код состояния, но не тело – Sparw

+0

Я обновил ответ. Извините за плохой ответ. –

+0

Прекрасно работает! Большое спасибо :) – Sparw

 Смежные вопросы

  • Нет связанных вопросов^_^