首頁  >  文章  >  web前端  >  了解 Express.js 和 Node.js 中的中間件 - 第 9 部分

了解 Express.js 和 Node.js 中的中間件 - 第 9 部分

Patricia Arquette
Patricia Arquette原創
2024-09-21 06:29:49816瀏覽

Understanding Middleware in Express.js with Node.js - Part 9

了解 Express.js 中的中間件:簡單的方法

Express.js 中的中間件可能聽起來有點技術性,但是一旦掌握了它的竅​​門,它就非常簡單了。這就像比賽中的進站一樣——請求進來,在到達終點線(您的路線處理程序)之前,他們會在不同的點停下來進行修改、檢查或記錄。

在本文中,我們將詳細介紹什麼是中間件、如何使用它,並向您展示一些現實生活中的範例。讓我們盡可能讓它簡單實用!


那麼,中間件到底是什麼呢?

想像一下對伺服器的每個請求都是一輛車在公路旅行。中間件就像每輛車在到達目的地之前必須經過的一系列檢查站。在每個檢查點(中間件),都會發生一些事情:也許汽車被洗了,也許它撿起了一些零食,或者也許它被告知掉頭回家!

用編碼術語來說,中間件只是位於請求和回應之間的函數。它可以:

  • 運行一些程式碼。
  • 更改請求或回應。
  • 停止進一步的請求。
  • 將其傳遞給下一個中間件。

這是一個超級基本的範例:

app.use((req, res, next) => {
  console.log('A request came in!');
  next(); // Pass the baton to the next middleware
});

每次要求到達您的伺服器時,它都會記錄一條訊息,然後將控制權傳遞給下一個中間件或路由處理程序。


內建中介軟體:Express 的即用型工具

Express 隨附一些內建的中間件功能,讓生活變得更輕鬆。以下是您可能會一直使用的幾個:

1- express.json():這個可以幫助您處理傳入的 JSON 資料。

app.use(express.json());

2- express.static():想要提供圖片或 CSS 等靜態檔案?這個中間件可以滿足您的需求。

app.use(express.static('public'));

3- express.urlencoded():它有助於解析透過 HTML 表單傳送的資料。

app.use(express.urlencoded({ extended: true }));

自訂中間件:建立您自己的中間件

您也可以建立自己的中間件來處理特定任務,例如登入或檢查使用者是否登入。

範例:簡單記錄器

app.use((req, res, next) => {
  console.log(`Request Method: ${req.method}, URL: ${req.url}`);
  next();
});

每次要求到達您的伺服器時,都會記錄 HTTP 方法和 URL。它非常適合追蹤您的應用程式發生的情況。

範例:驗證檢查

const checkAuth = (req, res, next) => {
  if (!req.headers.authorization) {
    return res.status(403).send('You shall not pass! (Unauthorized)');
  }
  next(); // Allow the request to continue if authorized
};

app.use(checkAuth);

在這裡,如果請求沒有授權標頭,它將被阻止並顯示「403 Forbidden」訊息。否則,它就會被傳遞。


使用第三方中介軟體

不想自己寫所有內容嗎?好消息:Express 可與大量第三方中介軟體搭配使用,為您處理任務。

範例:摩根用於日誌記錄

morgan 是一種流行的記錄請求的中間件。使用方法:

1- 安裝它:

npm install morgan

2- 將其添加到您的應用程式中:

const morgan = require('morgan');
app.use(morgan('dev'));

現在,每次收到請求時,您都會在終端機中看到一個漂亮的格式化日誌。

範例:跨來源請求的 cors

cors 中間件可讓您的應用程式處理來自其他網域的請求(在建立 API 時非常有用)。

1- 安裝它:

npm install cors

2- 使用它:

const cors = require('cors');
app.use(cors());

就是這樣!現在您的應用程式可以毫不費力地處理跨來源請求。


特定路由的中介軟體

您不必總是將中間件套用至應用程式中的每個路由。有時,您只希望它在特定的上運行。

app.get('/dashboard', checkAuth, (req, res) => {
  res.send('Welcome to the Dashboard');
});

這裡,checkAuth 中間件僅在有人嘗試存取 /dashboard 路由時運行。如果沒有獲得授權,他們就不能進入!


使用中介軟體處理錯誤

有時事情會出錯。這就是錯誤處理中間件派上用場的地方。它看起來有點不同——它有四個參數:err、req、res 和 next。

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Something went wrong!');
});

此中間件捕獲錯誤並發回友善的「500 內部伺服器錯誤」訊息。


總結

中間件就像 Express.js 的瑞士軍刀。它可以幫助您管理請求、處理錯誤以及新增日誌記錄或身份驗證等很酷的功能。無論您是使用內建選項、自己編寫選項還是引入第三方工具,中間件都能讓您的應用程式保持模組化且易於管理。

感謝您的閱讀,祝您編碼愉快! ?

以上是了解 Express.js 和 Node.js 中的中間件 - 第 9 部分的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn