2017-02-07 49 views
0

Я пишу приложение простой переноски, чтобы получить a) Дата запроса & Время запроса пользователя b) URL-адрес запроса. c) Время отклика.Как написать класс-оболочку в express js

Это Как обернуть экспресс 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?

У кого-нибудь опыт в этом?

ответ

1

Вы можете сделать это, используя функции промежуточного программного обеспечения Express, размещенные перед всеми вашими маршрутами, чтобы вы могли применять их по любым маршрутам на ваш сервер. В промежуточном программном обеспечении приведенный ниже код ожидает 'finish' event to be emitted from the res object, после того, как заголовки и тело были полностью записаны для отправки обратно запрашивающему. Если вы предпочитаете регистрировать время ответа, как только сам запрос был закрыт, вы можете прослушивать событие 'close' на объекте 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}); 
});