天天看點

express 中間件

在每次路由執行函數時額外執行的函數,類似于vue-router的路由守衛

通過<code>app.use()</code>來使用中間件,中間件和路由的執行順序按上到下依次執行

在中間件中修改的<code>req res</code>在後續中間件和路由中都能通路到,如<code>req.body</code>就是<code>express.json()</code>挂載的屬性

中間間也可以使用<code>res.send</code>等方法,但是同一條鍊上隻能有依次<code>send</code>

函數接收三個參數:<code>req,res,next</code>,每個路由守衛都要<code>next()</code>以跳出這個中間件

每個路由也有第三個<code>next</code>參數,用來進入下一個中間件,如果沒有<code>next()</code>該路由不會進入下面的中間件 如下代碼,隻有通路<code>/home</code>時才會列印

<code>next()</code>方法也接收一個參數<code>“route”</code>,通過這樣調用會跳過通過多個函數定義的中間件中後面的所有中間件

隻有函數:不指定路徑,從上到下依次執行

路徑加函數(限定路徑的中間件):第一個參數是中間件應用的路徑,第二個是中間件函數

請求方法加請求路徑:和路由定義一樣

多個中間件函數:可以在一個中間件上添加多個,每個函數的<code>next()</code>按順序跳向下一個中間件函數

數組:數組中放入中間件函數,按數組順序執行,在數組中的中間件函數可以使用<code>next("route")</code>跳出數組執行

express路由對象:通過使用<code>express.Router()</code>獲得路由對象,在路由對象上定義路由,然後導入進<code>app.js</code>并<code>use</code>它來實作路由定義,如下,通過将路由單獨分離出來更容易維護

通過在<code>use</code>中添加第一個參數,可以限定<code>router</code>中定義的路由的字首,如下

這樣隻能通過<code>/test/aaa</code>來通路路由中定義的<code>/aaa</code>

錯誤進行中間件:在所有中間件後面進行錯誤處理,函數接收四個參數<code>err req res next</code>,通過在其它中間件中捕獲到錯誤,然後通過<code>next(err)</code>來傳遞錯誤到該中間件中,如下(實際上<code>next</code>隻要接收到<code>router</code>字元串以外的參數都會被判斷為錯誤

404進行中間件:通過在所有中間件最後,錯誤處理前添加一個不指定路徑的中間件來處理not found

express.json

express.urlencoded

express.raw

express.text

上面四個用來處理對應格式的請求資料,将資料挂載到<code>req.body</code>中

express.static

使用npm下載下傳後引入

官方的中間件倉庫

繼續閱讀