Node.js 有没有办法监视Express.js中的每个响应?
我想在express.js中创建一个中间件函数。它可以监视每个请求和响应。我创建了一个中间件,但它只能监视请求,不能监视响应Node.js 有没有办法监视Express.js中的每个响应?,node.js,express,Node.js,Express,我想在express.js中创建一个中间件函数。它可以监视每个请求和响应。我创建了一个中间件,但它只能监视请求,不能监视响应 function middlewareFunc (req,res,next) { console.log(req.body , req.params , req.query); next(); } 首先,您之所以只看到请求,是因为中间件的工作方式。每件事都按一定的顺序运行一次,并且只运行一次。当中间件运行时,很可能是在响应创建之前。为了得到响应,您必须在控制器进
function middlewareFunc (req,res,next) {
console.log(req.body , req.params , req.query);
next();
}
首先,您之所以只看到请求,是因为中间件的工作方式。每件事都按一定的顺序运行一次,并且只运行一次。当中间件运行时,很可能是在响应创建之前。为了得到响应,您必须在控制器进行渲染或类似操作时运行代码
其次,您似乎只需要基本的日志记录。它是与库一起使用还是只与控制台日志记录一起使用。好的,首先,您只看到请求的原因是因为中间件的工作方式。每件事都按一定的顺序运行一次,并且只运行一次。当中间件运行时,很可能是在响应创建之前。为了得到响应,您必须在控制器进行渲染或类似操作时运行代码
第二,基本的日志记录似乎是您所需要的一切。它是与库一起使用,还是只与控制台日志记录一起使用。为此,您可以编写两个中间件 1在所有请求终结点之前
//middleware
function middlewareFunEarlier(req,res,next) {
console.log(req.body , req.params , req.query);
next();
}
app.use(middlewareFunEarlier);
app.get('/', function(req, res, next){
//do something
res.end();
});
2在所有终点之后。您必须在所有端点中使用next
app.get('/', function(req, res, next){
//do something
next();
});
app.use(middlewareFunLater);
//middlware
function middlewareFunLater(req, res, next){
console.log(res);
res.end();
}
它可以与现有的工具一起使用。为此,您可以编写两个中间件 1在所有请求终结点之前
//middleware
function middlewareFunEarlier(req,res,next) {
console.log(req.body , req.params , req.query);
next();
}
app.use(middlewareFunEarlier);
app.get('/', function(req, res, next){
//do something
res.end();
});
2在所有终点之后。您必须在所有端点中使用next
app.get('/', function(req, res, next){
//do something
next();
});
app.use(middlewareFunLater);
//middlware
function middlewareFunLater(req, res, next){
console.log(res);
res.end();
}
可以使用现有工具解决此问题。您应该知道functionreq中的res,res,next是类http.ServerResponse的实例。因此,可以在完成事件时收听,请参见链接:
app.use和middleware可用于before,close和finish事件的组合可用于after。您应该知道functionreq,res,next中的res是类http.ServerResponse的实例。因此,可以在完成事件时收听,请参见链接:
app.use和middleware可用于before,close和finish事件的组合可用于after。建议在每个端点调用next是个坏主意。只有在不处理响应时才应调用Next。@Mukesh在每个端点中不使用Next是一个主要挑战。它针对小规模应用程序的基本解决方案。@t.niese在每个请求时调用next不是一个好主意,但对于这个特定需求,日志记录或此方法都满足条件。建议在每个端点调用next是一个坏主意。只有在不处理响应时才应调用Next。@Mukesh在每个端点中不使用Next是一个主要挑战。它针对小规模应用程序的基本解决方案。@t.niese在每次请求时调用next不是一个好主意,但对于这个特定需求,日志记录或这种方法都满足条件。是的,您也可以将其假定为日志记录模块。但问题是,我不能监视每个响应。是的,您也可以假设它是日志模块。但问题是我无法监控每个响应。您想从响应中监控什么?您想从响应中监控什么?我正要写同样的内容+1你为什么要通过请求?我正要写同样的请求+1您为什么在请求后通过?