如何在使用express之前和之后调用函数

时间:2018-01-01 15:08:55

标签: node.js express

我使用express在节点中休息api。

我有一些结束......

router.get('/admin/logs', (req, res) => {

当所有端点都被调用时,我想调用特定的函数。

我该怎么做?

因此,简单的方法就是将函数调用放到每个请求中。

但有没有全球化的方式?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

你可以使用Express middleware在所有其他调用之前放置一个处理程序,但遗憾的是没有。举个例子:

app.use((req, res, next) => {
    log.info("Hello!");
    next();
})

app.get("/", (req, res) => {
    res.end("That should work");
});

如果您想在所有请求之后拨打电话,您可以替换.end上的res功能,将您自己的功能放在那里进行一些自定义处理和调用真正的.end(),但我不推荐这个(monkeypatching很糟糕!)。

答案 1 :(得分:1)

在脚本的开头放置一个中间件并使用此on-finished



var onFinished = require('on-finished')


router.use('/*', (req, res, next) => {

    console.log('new request')
    
    onFinished(res, function (err) {
      console.log('request end')
    })
    
    next()

});