在Express Middleware中捕获响应主体

时间:2018-10-25 13:35:58

标签: javascript node.js express middleware

我正在尝试编写一个小的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始终为空。我尝试了几种其他方法来捕获响应正文,但似乎没有任何效果。

我要去哪里错了?

0 个答案:

没有答案