開發過javaee的童鞋一定知道filter,它是一個過濾器,可以攔截任何請求,可以對請求的request和response做相關處理。filter的一般形式是這樣的:
web.xml:
express中也有這種過濾器,但它叫中間件。跟filter不同的是,它是一個函數。它也可以通路請求對象(request object (req)), 響應對象(response object (res)), 和 web 應用中處于請求-響應循環流程中的中間件,一般被命名為 next 的變量。
express中間件可分為五種:
應用級中間件
路由級中間件
錯誤進行中間件
内置中間件
第三方中間件
<b>應用級中間件</b>
<b>
</b>
即application級中間件,作用域貫穿整個application,application也就是express的執行個體。
使用express-generator建立一個項目middleware:
打開app.js,我們可以看到其中一段404的應用級中間件:
應用級中間也可以指定範圍,比如這樣:
<b>路由級中間件</b>
路由級中間件與應用級相差無幾,隻是綁定的對象變成了express.router的執行個體。
舉個栗子, routes/index.js:
<b>錯誤進行中間件</b>
普通中間件有三個參數,req、res和next,而錯誤進行中間件有4個參數,分别是err、req、res和next。
app.js有一段錯誤進行中間件的代碼:
<b>内置中間件</b>
express.static 是 express 唯一内置的中間件。
app.js中是這樣使用的:
<b>第三方中間件</b>
顧名思義,這是第三方提供的中間件,為express的功能提供補充。
第三方中間件可以注冊為應用級中間件,也可以注冊為路由級中間件。
仍然可以看app.js的代碼片段: