Javascript 如何在expressjs中编写包装器类
我正在编写一个简单的wrap应用程序,它可以获取用户请求的a)请求日期和时间 b) 请求URL。 c) 响应时间 这是如何包装express js的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
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});
});