2015-10-06 178 views
0

我有一個Express.JS服務器,有很多res.json。爲了執行統計,日誌記錄和調試,我想在一個catch-all鉤子中捕獲響應負載。響應完成時的快速響應有效負載

我發現了finish事件res.on('finish')但我找不到如何從中提取響應有效載荷。

回答

1

res.on('finish')在數據發送完畢後被調用,所以負載不一定再存在於服務器上。您可以添加中間件來表達攔截每一個請求,然後重寫.json方法來記錄數據的函數被調用:

router.use('/', (req, res, next) => { 
    var old = res.json.bind(res); 
    res.json = (body) => { 
    //Do whatever 
    old(body); 
    } 
    next(); 
}) 
+0

那麼什麼樣的中間件/事件類型的訂閱我可以用它來攔截響應(錯誤或確定)在將響應轉發給客戶端之前?理想的是在res.send(data)之後; – greengold