我有點新的NodeJS,和目前我用快遞和請求(https://github.com/request/request)轉發我的應用程序請求REST API服務器,如下圖所示目前我的代碼:如何更改請求的NodeJS響應流
app.use('/rest/*', function(req, res) {
req.pipe(request('http://ipaddress/api')).pipe(res);
});
此代碼在REST API服務器正常工作時起作用,但如果其餘api服務器發生故障,我的nodejs應用程序也會關閉,因爲請求流將失敗並且錯誤不會被我的應用程序捕獲。 我查請求GitHub的頁面,它提供了處理流錯誤的一種方式,像
app.use('/rest/*', function(req, res) {
req.pipe(request('http://ipaddress/api').on('error', function(err) {
console.log(err);
})).pipe(res);
});
這隻能記錄錯誤和防止我的NodeJS應用程序崩潰,但我想改變的響應時發生錯誤,以便爲改變反應可通過管道輸送到最後一個,例如,我想在僞做什麼:
app.use('/rest/*', function(req, res) {
req.pipe(request('http://ipaddress/api').on('error', function(err) {
console.log(err);
// what I want to do in pseudocode
response.statusCode = 500;
response.json = {
reason: err.errno
};
})).pipe(res);
});
有沒有解決我的問題的任何方式?感謝您的任何想法!
這也許是不可能的,只有一個請求,因爲頭部已經被錯誤是可能發生的時間發送。相反,你應該做的是從節點服務器向api服務器發出一個HEAD請求,以檢查它是否在線,然後如果出現這種情況,請將API請求傳送給客戶端。否則,你可以發送你想要的任何響應給客戶端。 –