Node.js全局生效的中間件

目錄

1. 目錄結構

2. 代碼實現

2.1 安裝Express

2.2 app.js - 主文件

2.3 globalMiddleware.js - 全局中間件

3. 程序運行結果

4. 總結


在Node.js的Express框架中,全局生效的中間件是指應用程序啟動后,對所有請求都有效的中間件。它通常用于日志記錄、權限驗證、請求解析等場景。下面我們通過代碼示例來詳細介紹如何實現全局生效的中間件。


1. 目錄結構

/your-project├── app.js                # 主文件,啟動應用├── middleware│   └── globalMiddleware.js # 全局生效的中間件└── package.json          # 項目依賴管理文件

2. 代碼實現

2.1 安裝Express

如果你還沒有安裝Express,請先執行以下命令安裝:

npm init -y
npm install express

2.2 app.js - 主文件

app.js是應用的主入口,我們將在這里引入全局中間件并注冊路由。

// app.js
const express = require('express');
const app = express();// 引入全局中間件
const globalMiddleware = require('./middleware/globalMiddleware');// 使用全局中間件
app.use(globalMiddleware);// 定義一些測試路由
app.get('/', (req, res) => {res.send('<h1>Welcome to the Home Page</h1>');
});app.get('/about', (req, res) => {res.send('<h1>Welcome to the About Page</h1>');
});// 監聽端口
const PORT = 3000;
app.listen(PORT, () => {console.log(`Server is running on http://localhost:${PORT}`);
});

說明:

  • 通過app.use(globalMiddleware)注冊全局中間件,使得所有請求都會先經過該中間件。


2.3 globalMiddleware.js - 全局中間件

globalMiddleware.js定義了一個全局生效的中間件,它會記錄請求的時間、方法和訪問的URL。

// middleware/globalMiddleware.js
const globalMiddleware = (req, res, next) => {console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);next(); // 繼續執行下一個中間件或路由
};module.exports = globalMiddleware;

說明:

  • 這個中間件會在每個請求到達路由之前被調用。

  • new Date().toISOString()用于記錄請求時間,req.method記錄請求方式,req.url記錄訪問的路徑。

  • next()用于繼續傳遞請求,否則請求會一直停留在這個中間件里。


3. 程序運行結果

啟動應用:

node app.js

然后訪問以下地址:

  • 訪問http://localhost:3000/時,終端輸出:

    [2025-04-01T12:00:00.000Z] GET /
    

    頁面顯示:

    <h1>Welcome to the Home Page</h1>
    
  • 訪問http://localhost:3000/about時,終端輸出:

    [2025-04-01T12:00:05.000Z] GET /about
    

    頁面顯示:

    <h1>Welcome to the About Page</h1>
    

4. 總結

  • 全局中間件適用于所有請求,不需要在每個路由單獨調用。

  • 通過app.use(middleware)可以注冊全局中間件,所有請求都會先經過這個中間件。

  • 本示例中的全局中間件用于記錄請求日志,但它也可以用于權限驗證、請求體解析等更多場景。

希望本教程能幫助你理解Node.js的全局中間件!

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899976.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899976.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899976.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WiFi(無線局域網)技術的多種工作模式

WiFi&#xff08;無線局域網&#xff09;技術支持多種工作模式&#xff0c;以滿足不同的網絡需求和應用場景。以下是主要的WiFi工作模式及其詳細說明&#xff1a; 1. 基礎設施模式&#xff08;Infrastructure Mode&#xff09; [無線接入點 (AP)]/ | \ [客戶端…

PHP 8.x:現代Web開發的性能與效率革命

隨著PHP 8.x系列的持續演進&#xff0c;這門誕生于1995年的“古老”語言正煥發新生。通過引入革命性的JIT編譯器、類型系統增強及一系列現代化語法特性&#xff0c;PHP 8.x不僅鞏固了其在Web開發領域的統治地位&#xff0c;更將性能與開發者體驗推向新高度。 一、JIT編譯器&am…

【扣子agent入門】搭建計算熱量工作流

一、食物熱量知識庫 1. 創建知識庫 工作空間——資源庫——創建資源>知識庫 2. 自動采集網頁數據 文本格式>在線數據 自動采集 找一個食物熱量網站進行采集。 一定要讓知識按條數分段&#xff0c;不然不好查詢。 二、 意圖識別節點 意圖識別&#xff08;In…

腦影像分析軟件推薦 | JuSpace

目錄 1. 軟件界面 2.工具包功能簡介 3.軟件安裝注意事項 參考文獻&#xff1a; Dukart J, Holiga S, Rullmann M, Lanzenberger R, Hawkins PCT, Mehta MA, Hesse S, Barthel H, Sabri O, Jech R, Eickhoff SB. JuSpace: A tool for spatial correlation analyses of magne…

微信小程序喚起app

1、前提 1、app與小程序主體需一致&#xff0c;可以前往微信公眾平臺關聯。 2、小程序的場景值為1069&#xff0c;也就是得從app打開小程序&#xff0c;小程序才能喚起app。 2、vue3代碼示例 <template><view class"maxBox bgc"><button open-typ…

jarvisoj API調用 [JSON格式變XXE]

http://web.jarvisoj.com:9882/ 題目要求&#xff1a;請設法獲得目標機器 /home/ctf/flag.txt 中的flag值 抓包得到&#xff1a; POST /api/v1.0/try HTTP/1.1 Host: web.jarvisoj.com:9882 Content-Length: 36 Accept-Language: zh-CN,zh;q0.9 User-Agent: Mozilla/5.0 (W…

3. 矩陣置零

leetcode Hot 100系列 文章目錄 一、核心操作二、外層配合操作三、核心模式代碼總結 一、核心操作 根據行和列檢測出0所在位置&#xff0c;并將行和列數組的對應位置改為true如果遍歷到某一行列時&#xff0c;只要行和列數組里面有一個是true&#xff0c;就置為0 提示&#…

【接口重復請求】axios通過AbortController解決頁面切換過快,接口重復請求問題

處理網絡請求時&#xff0c;我們經常會遇到需要中途取消請求的情況&#xff0c;比如用戶在兩個tab之間反復橫跳的場景&#xff0c;如果每個接口都從頭請求到結束&#xff0c;那必然會造成很大的服務壓力。 AbortController是一個Web API&#xff0c;它提供了一個信號對象&…

C語言跳表(Skip List)算法:數據世界的“時光穿梭機”

在數據結構算法中&#xff0c;有一種算法猶如“時空穿梭機”&#xff0c;能在瞬間跨越層層障礙&#xff0c;直擊目標——它就是跳表算法。下面&#xff0c;就讓我們一起揭開跳表算法的神秘面紗&#xff0c;通過實例探究其高效與魅力。 目錄 一、跳表算法是什么&#xff1f; …

2023第十四屆藍橋杯大賽軟件賽省賽C/C++ 大學 B 組(真題題解)(C++/Java題解)

記錄刷題的過程、感悟、題解。 希望能幫到&#xff0c;那些與我一同前行的&#xff0c;來自遠方的朋友&#x1f609; 大綱&#xff1a; 1、日期統計-&#xff08;解析&#xff09;-暴力dfs&#xff08;&#x1f609;藍橋專屬 2、01串的熵-&#xff08;解析&#xff09;-不要chu…

批量將文本文件轉換為 Word/PDF/Excel/圖片等其它格式

工作中我們經常會接觸到各種格式的文本文檔&#xff0c;比如說 txt 記事本文件、json文件、HTML格式文件等等。通常也會需要將文本文件轉換為其他的格式&#xff0c;比如說將文本文件轉換為 word 格式、PDF格式或者圖片格式等等。當我們想要對文本文件格式進行批量轉換的時候&a…

Java常用工具算法-2--加密算法1--對稱加密算法(推薦AES算法)

1、定義與核心原理 定義&#xff1a;加密和解密使用相同密鑰的算法。工作流程&#xff1a; 秘鑰協商&#xff1a;雙方需提前通過安全信道共享密鑰。加密過程&#xff1a;發送方用密鑰對明文加密&#xff0c;生成密文。解密過程&#xff1a;接收方用相同密鑰對密文解密&#xf…

WPS宏開發手冊——Excel常用Api

目錄 系列文章4、Excel常用Api4.1、判斷是否是目標工作excel4.2、獲取源工作表和目標工作表的引用4.3、獲取單元格的值4.4、設置單元格的值4.5、合并單元格4.6、獲取源范圍4.7、獲取源范圍行數4.8、通過源來獲取單元格的值4.9、設置單元格的背景顏色4.10、設置單元格的文字顏色…

安徽京準:GPS北斗衛星校時服務器助力大數據云計算

安徽京準&#xff1a;GPS北斗衛星校時服務器助力大數據云計算 安徽京準&#xff1a;GPS北斗衛星校時服務器助力大數據云計算 GPS北斗衛星校時服務器在大數據與云計算系統中發揮著關鍵作用&#xff0c;其通過提供高精度、高可靠的時間同步服務&#xff0c;解決了分布式系統的核…

音視頻 ColorSpace色彩空間詳解

前言 基于前篇介紹YUV格式,本文繼續介紹另一個重要概念顏色空間,又叫色彩空間;主要用于在音視頻開發中的色彩空間轉換。 色彩空間Color Space 色彩空間由色彩模型和色域共同定義。當色彩模型與特定的描述相關聯以后,就稱為色彩空間。 色彩模型Color Model 色彩模型Col…

高效定位 Go 應用問題:Go 可觀測性功能深度解析

作者&#xff1a;古琦 背景 自 2024 年 6 月 26 日&#xff0c;阿里云 ARMS 團隊正式推出面向 Go 應用的可觀測性監控功能以來&#xff0c;我們與程序語言及編譯器團隊攜手并進&#xff0c;持續深耕技術優化與功能拓展。這一創新性的解決方案旨在為開發者提供更為全面、深入且…

構造超小程序

文章目錄 構造超小程序1 編譯器-大小優化2 編譯器-移除 C 異常3 鏈接器-移除所有依賴庫4 移除所有函數依賴_RTC_InitBase() _RTC_Shutdown()__security_cookie __security_check_cookie()__chkstk() 5 鏈接器-移除清單文件6 鏈接器-移除調試信息7 鏈接器-關閉隨機基址8 移除異常…

大語言模型開發框架——LangChain

什么是LangChain LangChain是一個開發由語言模型驅動的應用程序的框架&#xff0c;它提供了一套工具、組件和接口&#xff0c;可以簡化構建高級語言模型應用程序的過程。利用LangChain可以使應用程序具備兩個能力&#xff1a; 上下文感知 將語言模型與上下文&#xff08;提示…

自動化釋放linux服務器內存腳本

腳本說明 使用Linux的Cron定時任務結合Shell腳本來實現自動化的內存釋放。 腳本用到sync系統命令 sync的作用&#xff1a;sync 是一個 Linux 系統命令&#xff0c;用于將文件系統緩存中的數據強制寫入磁盤。 在你執行reboot、poweroff、shutdown命令時&#xff0c;系統會默認執…

Python Websockets庫深度解析:構建高效的實時Web應用

引言 在現代Web開發中&#xff0c;實時通信已經成為許多應用的核心需求。無論是聊天應用、在線游戲、金融交易平臺還是協作工具&#xff0c;都需要服務器和客戶端之間建立持久、雙向的通信通道。傳統的HTTP協議由于其請求-響應模式&#xff0c;無法有效滿足這些實時交互需求。…