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

サーバーのセットアップ時に (つまり、Express または restify などを使用している場合)、任意の API 呼び出しで使用される「グローバル ルート」を追加できます。

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 に答える