发送后的访问响应状态代码/正文

时间:2019-02-22 20:15:29

标签: node.js express middleware

我正在尝试监视我的快递服务器发送的响应的状态码,该服务器有很多路由。一种方法是在用res.send()发送错误代码之前手动保存错误代码,但我希望有一种更简洁的方法。我尝试使用在路由处理程序之后调用的中间件,但未调用,可能是因为res.send终止了中间件的执行。有一种干净的方法吗?

1 个答案:

答案 0 :(得分:0)

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
}

希望有帮助!