Доступ к коду статуса ответа / телу после его отправки - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь отслеживать коды состояния ответов, отправленных моим экспресс-сервером, который имеет довольно много маршрутов.Один из способов сделать это - вручную сохранить код ошибки, прежде чем я отправлю его с res.send(), но я бы предпочел более чистый способ сделать это.Я попытался использовать промежуточное ПО, которое вызывается после обработчика маршрута, но оно не вызывается, предположительно потому, что res.send завершает выполнение промежуточного ПО.Есть ли чистый способ сделать это?

1 Ответ

0 голосов
/ 23 февраля 2019

res.send() не заканчивает выполнение промежуточного программного обеспечения, но отсутствие вызова next() будет.Итак, в вашем случае, я думаю, что цепочка другого промежуточного программного обеспечения после того, как ваш обработчик маршрута - правильный подход, просто убедитесь, что он заканчивается вызовом next().

Пример:

// router.js
const express = require('express')
const router = express.Router()
const routeHandler = require('../controllers/route-handler')
const logResponse = require('../middleware/log-response')
router.get('/', routeHandler, logResponse)
// controllers/route-handler.js
function routeHandler(req, res, next) {
  // Do some stuff
  res.status(200).json({})
  return next() // <-- This is the key -- it will continue to the next  middleware
}

module.exports = {
  routeHandler
}
// middleware/log-response.js
function logResponse(req, res, next) {
  console.log(res.status, res.statusText) // 200 OK
}

module.exports = {
  logResponse
}

Надеюсь, это поможет!

...