您可以为ExpressJS编写一个中间件函数,一旦发送响应,它将记录主体。将其基于Node的http模块,以查看Connect(以及Express)如何管理响应主体(即流):您可以使用两种写入该流的方法来捕获流,然后将它们组合/解码为记录下来。简单的解决方案可能会变得更强大,但是它显示了该概念的有效性。
function bodyLog(req, res, next) {
var write = res.write;
var end = res.end;
var chunks = [];
res.write = function newWrite(chunk) {
chunks.push(chunk);
write.apply(res, arguments);
};
res.end = function newEnd(chunk) {
if (chunk) { chunks.push(chunk); }
end.apply(res, arguments);
};
res.once('finish', function logIt() {
var body = Buffer.concat(chunks).toString('utf8');
// LOG BODY
});
next();
}
Run Code Online (Sandbox Code Playgroud)
然后在主应用路由器中分配任何路由之前进行设置:
app.use(bodyLog);
// assign routes
Run Code Online (Sandbox Code Playgroud)
我想您也可以将其用作Morgan中变量的赋值,但我尚未研究异步变量赋值如何工作。
| 归档时间: |
|
| 查看次数: |
2337 次 |
| 最近记录: |