我正在尝试监控我的快速服务器发送的响应的状态代码,该服务器有很多路由。一种方法是在我使用res.send()
发送之前手动保存错误代码,但我宁愿采用更简洁的方法。我尝试使用在路由处理程序之后调用的中间件,但它没有被调用,大概是因为res.send
结束了中间件的执行。这样做有干净的方法吗?
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
}
希望有所帮助!