我将尝试编写一个小型的API记录器,作为Express中间件。该记录器从req和res中收集各种信息,然后保存一个JSON文件到磁盘中,可以在以后进行读取。
以下是我当前用于存储日志的函数。
问题在于res.body始终为空。我尝试了几种不同的方法来获取响应正文,但似乎都没有起作用。
我错在哪里了?
以下是我当前用于存储日志的函数。
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始终为空。我尝试了几种不同的方法来获取响应正文,但似乎都没有起作用。
我错在哪里了?
express-interceptor
,morgan-body
,express-mung
。 - undefined