我正在寻找通用的方法来审核我为某些API编写的快速中间件。
我已经提出了几种做法,但似乎没有一种对我有效。目前我只想登录到控制台或日志文件,但稍后我会查看数据存储区。
使用代码段中给出的中心功能进行日志记录。这是记录API的请求/响应的好方法,但在审核关键信息(例如从用户注册审核用户ID)时却没有帮助。或者在用户登录时审核电子邮件地址。
function auditUserAction(apiFunction) {
function jsonWrapper(funcToWrap, userAction) {
return function() {
userAction.jsonResponse = arguments[0];
return funcToWrap.apply(this, arguments);
}
}
return function() {
req = arguments[0];
res = arguments[1];
// Overriding json method so we can capture the json response
res.json = jsonWrapper(res.json, userAction);
userAction.url = req.url;
userAction.userId = req.headers.user_id;
userAction.referer = req.headers.referer;
userAction.browserAgent = req.headers['user-agent'];
result = apiFunction.apply(this, arguments);
userAction.responseStatusCode = res.statusCode;
userAction.responseBody = res.body;
logger.info("Action", userAction);
return result;
}
}
..........
router = require('express').Router();
router.post('/users', auditUserAction(createUser));
有比这更好的策略吗?我在网上搜索过,但无论如何都找不到这样做的优雅。