javascript - 在 Express 中间件中捕获响应正文
问题描述
我正在尝试编写一个小型 API 记录器作为 Express 中间件。记录器从 req 和 res 中收集各种信息,然后将 JSON 文件保存到磁盘上供以后读取。
这是我当前存储日志的功能。
function store(req, res, next) {
init();
const log = {
request_url: req.hostname,
request_body: req.body,
request_method: req.method,
request_headers: req.headers,
api_endpoint: req.baseUrl,
timestamp: moment().format('x')
};
res.on('finish', () => {
log.response_body = res.body;
log.response_status = res.statusCode;
global.enoch_logs.push(log);
fs.writeFile(`./logs/${ moment().format('x') }.json`, JSON.stringify(log), (err) => (err) ? console.log(err) : null);
});
next();
}
问题是 res.body 总是空的。我尝试了几种不同的方法来捕获响应正文,但似乎没有任何效果。
我哪里错了?
解决方案
推荐阅读
- android - 杀死应用程序通知点击意图 putExtra 方法不起作用
- elasticsearch - Elascticsearch 索引中新添加的关键字字段不可搜索
- mysql - 将字符串转换为日期格式并检索周数
- javascript - NodeJS:如何在 JSON.parse() 的返回值中添加一个变量?
- jvm - JVM 堆/堆栈与虚拟地址空间堆/堆栈不同吗?
- javascript - JavaScript对象将值设置为对象但不更新到firebase
- node.js - pg-node 中的日期格式
- ember.js - 使用 ember font-awesome 时如何操作图层文本?
- swift - SwiftUI macOS 在 TextField 处于活动状态时使用箭头键滚动列表
- javascript - 我如何在 JSON 的属性中获取属性?