对于我的NodeJs项目,我使用Express路由器。我创建了一个 router.js
module.exports = (app) => {
app.use('/', require('./routes/home.js'));
app.use('/contact', require('./routes/contact.js'));
app.use('/imprint', require('./routes/imprint.js'));
};
,在我的 app.js 中,我需要此文件require('./server/router.js')(app);
。呼叫路线时,例如/contact
,我需要 contact.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.render('contact', { // render contact.hbs
title: 'Contact' // pass in some template variables
});
});
module.exports = router;
在router.get
内,我可以使用console.log(req.method)
来记录HTTP方法。目前,我将不得不在所有路由器文件中记录该日志。可以将代码放在一个地方吗?
module.exports = (app) => {
console.log(req.method); // Log the request method for all routes
app.use('/', require('./routes/home.js'));
app.use('/contact', require('./routes/contact.js'));
app.use('/imprint', require('./routes/imprint.js'));
};
请提供一个无需安装中间件的解决方案。我知道那里有很多记录器。
答案 0 :(得分:4)
您可以在下面的HTTP请求记录器中间件中使用node.js,而不必在代码中添加任何内容。只需在您的主应用程序中对其进行配置,即可完成所有工作。
答案 1 :(得分:1)
如果要避免安装中间件并使用console.log
,则可以按以下方式更改代码:
module.exports = (app) => {
app.use((req, res, next) => {
console.log('Request Type:', req.method);
console.log('Time:', Date.now());
next();
})
app.use('/', require('./routes/home.js'));
app.use('/contact', require('./routes/contact.js'));
app.use('/imprint', require('./routes/imprint.js'));
};
如果您没有指定路由,但是有next
回调,那么它将首先执行您的日志记录代码,然后执行匹配的路由(如果有)。您可以在ExpressJS API documentation的“使用中间件”部分中找到更多详细信息。