iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
自我挑戰組

30 天架設 Node.js - Express 框架:快速學習之路系列 第 5

Day 5 - 中介軟體:處理請求和響應的中間處理程序

  • 分享至 

  • xImage
  •  

在前兩天瞭解了express 的核心技術之一的Routing (路由)後,
今天我們要來學習另一個核心 → Middleware (中介軟體)

什麼是中介軟體

我們先看一下官網對 Middleware 的說明:

Middleware functions are functions that have access to the request object (req), the response object (res), and the next function in the application’s request-response cycle. The next 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 的請求,都會先印出請求的時間,
再執行我們之前所寫的函式,不會動到原本程式的架構。

https://ithelp.ithome.com.tw/upload/images/20230902/201623047KFvqYjukK.png

如果對沒有加上 next() 會發生什麼事感到好奇的話,可以自行動手試試看,
會更有感覺哦!


認識了 Middleware 後,
就可以拿來判斷是否有在登入狀況或是針對錯誤等處理,在寫各種個請求回應可以更加擴充靈活。

預計在介紹完 express 核心技術及連接資料庫之後會實作註冊登入,
到時候會更一目瞭然。/images/emoticon/emoticon30.gif

今天對中介軟體的介紹就到這裡,大家明天見~

參考資料:


上一篇
Day 4 - 路由和控制器:處理 URL 和路由(下)
下一篇
Day 6 - 靜態檔案和樣板引擎:處理靜態資源和動態網頁(上)
系列文
30 天架設 Node.js - Express 框架:快速學習之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言