1

我已经在 NodeJs Connect-rest中编写了一个 REST API,我想知道如何存储上次调用的日期和时间。

这是 GET url 调用

http://localhost:8080/api/books/metadata?id=12

过滤此 ID 的代码片段

module.exports.getItem = function(callback, id) {

    var searchLetter = new RegExp(id, 'i');

    //would like to record date/time the last time this call was made to this ID/row
    //return the date/time back in the callback method 
    var row = items.filter(function(itemList) { 
        return searchLetter.test(itemList.asname);
    });

    return callback(null, {items: row, matches: row.length}, {headers: {'Content-type': 'application/json'}});
};
4

1 回答 1

0

您可以在设置服务器时添加一个“全局路由”以与任何 api 调用一起使用(也就是说,如果您使用的是 Express 或 restify 或类似的):

app.use(function (req, res, next) {
    console.log( "Got a request at " + new Date() ); //might want to format date
});

(请求参数可能已经存储了时间。)

其中一些框架将有一个“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,追加到文件等。

于 2014-07-31T12:32:20.497 回答