是的,你可以鏈接處理程序的路線。你的處理程序定義應該是這樣
routehandler(req, res, next){
//send response directly
//or call next to call the next handler
}
你可以再放入多個處理程序在你想要的順序:
app.get('/server', ensureAuthenticated, housekeeping, routes.server.get)
這裏ensureAuthenticated
和housekeeping
不發送響應就叫next()
。最後一個返回結果頁面。
請參閱您希望使用不同於您用於登錄的處理程序。登錄頁面將執行身份驗證,其餘頁面應該檢查用戶是否已通過身份驗證。如果您使用會話,這種差異將會很明顯。
路由處理程序的參數與中間件的參數相同。這些是:
- (ERR,REQ,RES,下一個)錯誤處理程序
- (REQ,RES,下)非錯誤處理
的上方的瑣碎變型是next
可以是如果它是您想要的回調鏈中的最終功能,則省略。你不能有其他的參數。你可以看到他們如何被稱爲here(154行)。一個路由由方法,路由匹配和回調數組組成。與中間件一樣,回調鏈按順序執行特定路由,直到返回響應或引發錯誤。
謝謝,你能解釋一下,routehandler在哪裏得到它的參數(req,res,next等)。我不會將它們傳入代碼的任何部分。我可以稱之爲'routehandler(next,req,err,res)'嗎? – Schtz
@Schtz更新了答案。 – user568109
非常感謝。還需要學習。 – Schtz