在前兩天瞭解了express 的核心技術之一的Routing (路由)後,
今天我們要來學習另一個核心 → Middleware (中介軟體)
我們先看一下官網對 Middleware 的說明:
Middleware functions are functions that have access to the request object (
req
), the response object (res
), and thenext
function in the application’s request-response cycle. Thenext
function is a function in the Express router which, when invoked, executes the middleware succeeding the current middleware.
Middleware 也就是在執行 request(請求) 和 response(回應) 時,會進行到的中間函數。
若函數還尚未結束時需使用 next()
,將函數傳遞到下一個中間函數處理。
經過一連串的傳遞,到最後沒有 next()
的函式,就會結束並傳到 response。
經過前幾天的練習,已經可以做一個一來一回的 request和 response,
但如果我們想在每個來自 book
路由的請求回應之前,都記錄請求的時間,
我們就可以在原本的程式加上 Middleware。
/routes/modules/book.js
const express = require('express')
const router = express.Router()
router.use((req, res, next) => {
//取得現在時間(台灣時間)
console.log('requestTime: ', new Date(new Date().getTime() + 8 * 60 * 60 * 1000))
next() // 呼叫 next() 執行下一個函式
})
// 後面執行原本程式
.
.
.
這樣每次只要有來到路由為 book
的請求,都會先印出請求的時間,
再執行我們之前所寫的函式,不會動到原本程式的架構。
如果對沒有加上 next()
會發生什麼事感到好奇的話,可以自行動手試試看,
會更有感覺哦!
認識了 Middleware 後,
就可以拿來判斷是否有在登入狀況或是針對錯誤等處理,在寫各種個請求回應可以更加擴充靈活。
預計在介紹完 express 核心技術及連接資料庫之後會實作註冊登入,
到時候會更一目瞭然。
今天對中介軟體的介紹就到這裡,大家明天見~
參考資料: