在学校锻炼期间,我们的任务是在Express中制作自定义中间件:
这可能很棘手。使它成为您的自定义日志记录中间件 还会记录最终的响应状态代码。例如,经过一次 成功的GET请求/您应该看到:
GET / 200
我试过了:
app.use(function(req, res, next) {
console.log(chalk.green(req.method, req.url, res.statusCode));
next();
});
它似乎有用,但后来我注意到在尝试uri
时不存在我仍然得到:
GET /foo 200
这是否意味着 请求 ,即GET正在运行但如果资源在那里则无所事事?
另外,我将如何实现错误处理,在这个例子中我试过:
app.use(function(err, req, res, next) {
if (err) {
console.log(err);
} else {
console.log(chalk.green(req.method, req.url, res.statusCode));
}
next();
});
但那根本不起作用! 提前谢谢!
答案 0 :(得分:2)
app.use(function(req, res, next) {
if (res.headersSent) {
console.log(chalk.green(req.method, req.url, res.statusCode));
} else {
res.on('finish', function() {
console.log(chalk.green(req.method, req.url, res.statusCode));
})
}
next();
});