为了记录和调试,我想在将响应发送到浏览器之前输出前一百个字符左右的内容。是否可以通过中间件和响应对象来实现这个简单的功能呢?
理想情况下,代码如下:
app.use(function(req, res, next) {
console.log('Response snippet: '+((res.body || '').substr(0,100)));
next();
});
除了响应没有正文,我无法确定当前要发送的正文传递到何处。
更新:
Peter的答案有效,我想把我的中间件代码放在这里,以保存未来的查看者不用再点击:
App.use(function(req, res, next) {
var end = res.end;
res.end = function(chunk, encoding){
res.end = end;
if (chunk) {
console.log(chunk);
}
res.end(chunk, encoding);
};
next();
});
res.on('data', callback)
上监听,但如果你使用了express.compress()
,那么它将是二进制的。如果这只是为了开发,你可以不启用压缩。 - Jonathan Ong