Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在expressjs中编写包装器类_Javascript_Node.js_Express_Npm_Wrapper - Fatal编程技术网

Javascript 如何在expressjs中编写包装器类

Javascript 如何在expressjs中编写包装器类,javascript,node.js,express,npm,wrapper,Javascript,Node.js,Express,Npm,Wrapper,我正在编写一个简单的wrap应用程序,它可以获取用户请求的a)请求日期和时间 b) 请求URL。 c) 响应时间 这是如何包装express js的 var express = require('express'); var app = express(); var appget = app.get; (function() { app.get = function() { var start = new Date(); console.log('arguments', arg

我正在编写一个简单的wrap应用程序,它可以获取用户请求的a)请求日期和时间 b) 请求URL。 c) 响应时间

这是如何包装express js的

var express = require('express');
var app = express();

var appget = app.get;

(function() {

app.get = function() {

  var start = new Date();

  console.log('arguments', arguments)

  var result = appget.apply(this, arguments);
  var end = new Date();

  var duration = end.getTime() - start.getTime();

  console.log("duration===", duration);
}

})();
我编写了简单的包装器代码 但是需要知道如何获取req参数吗


有人有过这方面的经验吗?

您可以使用放在所有路由之前的快速中间件功能来完成这项工作,这样您就可以跨任何路由将其应用到服务器。在中间件中,下面的代码正在等待消息,一旦消息头和消息体被完全写入,就会发送回请求者。如果希望在请求本身关闭后记录响应时间,则可以在下面的中间件中侦听
req
对象上的事件

const express = require('express');
const app = express();
const port = process.env.PORT || 1337;

// Place this middleware before any of the route definitions/middleware
app.use((req, res, next) => {
    // store when request date & time came in
    req.startTime = Date.now();

    // Log the original URL requested
    console.log(req.originalUrl);

    // Register finish event handler so when the response
    // body and headers are sent, the total responseTime is logged
    res.on('finish', () => {
        let responseTime = Date.now() - req.startTime;
        console.log(`Response Time: ${responseTime}`);
    });

    return next();
});

// Place all routes/router middleware here  

app.listen(port, () => { 
    console.log(`Listening on ${port}); 
});