Javascript 在NodeJs中存储上次接收到的REST调用的日期/时间
我已经在NodeJs中编写了一个restapi,我想知道如何存储上次调用的日期和时间 下面是GET url调用Javascript 在NodeJs中存储上次接收到的REST调用的日期/时间,javascript,node.js,rest,node.js-connect,Javascript,Node.js,Rest,Node.js Connect,我已经在NodeJs中编写了一个restapi,我想知道如何存储上次调用的日期和时间 下面是GET url调用 http://localhost:8080/api/books/metadata?id=12 筛选此id的代码被截断 您可以添加“全局路由”,以便在设置服务器时与任何api调用一起使用(即,如果您使用的是Express或restify或类似工具): (请求参数可能已经存储了时间。) 其中一些框架将有一个“after”事件,该事件在请求被完全处理后触发(因此该日志记录实际上不是链的一部分
http://localhost:8080/api/books/metadata?id=12
筛选此id的代码被截断
您可以添加“全局路由”,以便在设置服务器时与任何api调用一起使用(即,如果您使用的是Express或restify或类似工具): (请求参数可能已经存储了时间。) 其中一些框架将有一个“after”事件,该事件在请求被完全处理后触发(因此该日志记录实际上不是链的一部分)。如restify中的示例,我在其中构建了一条自定义日志消息:
server.on( 'after', function logRequest( req, res, route, error ) {
var latency = res.get( 'Response-Time' );
if ( typeof( latency ) !== 'number' )
latency = Date.now() - req._time;
var obj = {
userAgent: req.headers[ 'user-agent' ],
url: req.url,
method: req.method,
statusCode: res.statusCode,
req_id: req.getId()
};
obj.latency = latency;
server.log.info( obj );
} );
在本例中,我使用的是restify的日志中间件,但您可以使用自己的日志记录器,
console.log
、append-to-file等。我使用的是Connect-rest,另外,我希望每个单独的项目都使用它,这意味着每个单独的项目可能有不同的访问时间!!另一个框架的.use()
或.on('after')
方法是路由链的一部分。因此,对于通过系统的每个请求,他们都会被调用,每个请求都有不同的时间。(您可能需要比newdate()
更细粒度的方法)。我认为connect
将为app.use()提供一个选项。
app.use(function (req, res, next) {
console.log( "Got a request at " + new Date() ); //might want to format date
});
server.on( 'after', function logRequest( req, res, route, error ) {
var latency = res.get( 'Response-Time' );
if ( typeof( latency ) !== 'number' )
latency = Date.now() - req._time;
var obj = {
userAgent: req.headers[ 'user-agent' ],
url: req.url,
method: req.method,
statusCode: res.statusCode,
req_id: req.getId()
};
obj.latency = latency;
server.log.info( obj );
} );