我目前正在努力處理ExpressJS路線中的錯誤處理的最佳做法,特別是POST路線。如何最好地處理ExpressJS POST路線中的錯誤
我已經設置了默認的中間件錯誤處理,如果有任何錯誤,我使用return next(err);
。這適用於GET路由中的所有錯誤。
但是,處理其他路由類型(尤其是POST路由)中的錯誤的最佳做法是什麼?
在前端,我使用的是AngularJS,我使用$http
發佈。在POST路由中使用return next(err);
時,$http
的.error(function(data,status,headers,config)
被稱爲(AngularJS),我收到數據變量中的整個html錯誤頁面。
我正在尋找的是用戶重定向到通過ExpressJS中間件的一般錯誤頁面,以防客戶端不應該處理這個錯誤。這樣,我也可以在一個地方進行錯誤處理和日誌記錄。
所以,我目前的想法:在POST路線中,只需做return res.status(500).send({err: err});
如果應用程序無法恢復,那麼在客戶端使用AngularJS重定向到一般錯誤頁面。但是,我更願意使用ExpressJS中間件來處理錯誤。
我感謝任何幫助或指向最佳實踐文章!
作爲參考,(標準)錯誤的中間件功能如下:
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('shared/error/error', {
message: err.message,
error: err
});
});
Hello Blu!感謝您對AngularJS錯誤處理的詳細解答。澄清:對於GET路由,我想使用運行良好的ExpressJS錯誤處理中間件。我現在想知道,如果我可以在POST路由中使用相同的機制來處理錯誤,或者它實際上是直接在AngularJS中處理這些錯誤的最佳實踐。 – Alexander
對於POST路由,該方法將與上面相同,但用app.post()替換app.get(),用$ http.post()替換$ http.get()。兩條路線之間唯一明顯的區別在於,GET用於從數據庫檢索數據,POST用於創建數據。 –
Blu,再次感謝!我想我沒有足夠清楚地表達我的觀點。請讓我再試一次。對於GET路由,通過ExpressJS中間件(使用return next(err);)直接通過一種已建立好的方式處理錯誤。有沒有類似的方式直接在ExpressJS中處理POST路由錯誤? – Alexander