【问题标题】:Access response status code/body after it's sent发送后访问响应状态代码/正文
【发布时间】:2019-02-22 20:15:28
【问题描述】:

我正在尝试监控我的快递服务器发送的响应的状态代码,该服务器有很多路线。一种方法是在使用res.send() 发送错误代码之前手动保存错误代码,但我宁愿采用更简洁的方式来执行此操作。我尝试使用在路由处理程序之后调用的中间件,但它没有被调用,大概是因为res.send 结束了中间件的执行。有没有一种干净的方法可以做到这一点?

【问题讨论】:

标签: node.js express middleware


【解决方案1】:

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
}

希望有帮助!

【讨论】:

    猜你喜欢
    • 2015-07-25
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 2020-11-29
    • 2013-02-27
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多