Express.js 是使用 Node.js 建立 Web 應用程式的最受歡迎的框架之一。它有助於創建 RESTful API,並允許您以模組化方式建立應用程式。 Express.js 中的主要概念之一是使用中間件。在本文中,我們將了解什麼是中間件、它如何運作以及如何創建自己的中間件。
中間件是可以存取請求物件 (req)、回應物件 (res) 和 next() 函數的函數。他們可以修改請求和/或回應物件並控制請求-回應週期。中間件可以做很多事情,例如:
Express.js 中中介軟體的基本簽章是:
function middleware(req, res, next) { // Lógica do middleware next(); // Chama o próximo middleware }
在 Express 中,我們可以找到幾種類型的中間件:
當收到請求時,它會通過「中間件鏈」。每個中間件都可以處理請求,並在執行結束時決定是否呼叫下一個中間件(使用 next() 函數)或完成回應。
const express = require('express'); const app = express(); // Middleware global app.use((req, res, next) => { console.log('Request Type:', req.method); next(); }); // Middleware específico para a rota /user app.use('/user', (req, res, next) => { console.log('Middleware para /user'); next(); }); app.get('/user', (req, res) => { res.send('Página do Usuário'); }); app.listen(3000, () => { console.log('Servidor rodando na porta 3000'); });
除了 Express 或第三方提供的中間件之外,您還可以建立自己的中間件來處理特定功能,例如驗證、日誌或資料操作。
簡單驗證中間件範例:
function autenticar(req, res, next) { const token = req.header('Authorization'); if (!token) { return res.status(401).send('Acesso negado. Token não fornecido.'); } try { // Lógica para validar o token next(); // Continua para o próximo middleware } catch (err) { res.status(400).send('Token inválido.'); } } app.use(autenticar); // Aplica o middleware para todas as rotas
Express 也允許使用第三方中間件,可以透過 npm 安裝。一些最受歡迎的是:
安裝與使用 Morgan:
npm install morgan
const morgan = require('morgan'); // Middleware de log app.use(morgan('tiny')); app.get('/', (req, res) => { res.send('Hello World'); });
定義中間件的順序很重要,因為它們按照註冊的順序執行。例如,如果您在需要驗證的路由之後定義驗證中間件,則它將不會為該路由執行。
app.use(express.json()); // Middleware para parsear JSON app.post('/secure-data', autenticar, (req, res) => { res.send('Acesso a dados seguros'); });
如果中間件不呼叫 next() 函數,它將中斷請求-回應週期。如果您想在中間件本身內完成請求,例如在身份驗證檢查中,這可能很有用:
function autenticar(req, res, next) { if (!req.header('Authorization')) { return res.status(403).send('Não autorizado'); } next(); }
中間件是使用 Express.js 建立應用程式的重要組成部分,提供了極大的靈活性和模組化。透過掌握中間件的使用,您將能夠有效地建立 API、重複使用程式碼並以簡單且可擴展的方式添加身份驗證、安全性和資料操作等功能。
如果您尚未在專案中使用自訂中間件,請從簡單的東西開始,例如日誌記錄或身份驗證中間件,並體驗 Express.js 提供的模組化和靈活性!
你喜歡這篇文章嗎?不要忘記與其他開發者分享!
以上是理解並實作 Express.js 中的中間件的詳細內容。更多資訊請關注PHP中文網其他相關文章!