Node.js全局生效的中间件

目录

[1. 目录结构](#1. 目录结构)

[2. 代码实现](#2. 代码实现)

[2.1 安装Express](#2.1 安装Express)

[2.2 app.js - 主文件](#2.2 app.js - 主文件)

[2.3 globalMiddleware.js - 全局中间件](#2.3 globalMiddleware.js - 全局中间件)

[3. 程序运行结果](#3. 程序运行结果)

[4. 总结](#4. 总结)


在Node.js的Express框架中,全局生效的中间件是指应用程序启动后,对所有请求都有效的中间件。它通常用于日志记录、权限验证、请求解析等场景。下面我们通过代码示例来详细介绍如何实现全局生效的中间件。


1. 目录结构

bash 复制代码
/your-project
  ├── app.js                # 主文件,启动应用
  ├── middleware
  │   └── globalMiddleware.js # 全局生效的中间件
  └── package.json          # 项目依赖管理文件

2. 代码实现

2.1 安装Express

如果你还没有安装Express,请先执行以下命令安装:

bash 复制代码
npm init -y
npm install express

2.2 app.js - 主文件

app.js是应用的主入口,我们将在这里引入全局中间件并注册路由。

javascript 复制代码
// 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。

javascript 复制代码
// 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. 程序运行结果

启动应用:

bash 复制代码
node app.js

然后访问以下地址:

  • 访问http://localhost:3000/时,终端输出:

    javascript 复制代码
    [2025-04-01T12:00:00.000Z] GET /

    页面显示:

    javascript 复制代码
    <h1>Welcome to the Home Page</h1>
  • 访问http://localhost:3000/about时,终端输出:

    javascript 复制代码
    [2025-04-01T12:00:05.000Z] GET /about

    页面显示:

    javascript 复制代码
    <h1>Welcome to the About Page</h1>

4. 总结

  • 全局中间件适用于所有请求,不需要在每个路由单独调用。

  • 通过app.use(middleware)可以注册全局中间件,所有请求都会先经过这个中间件。

  • 本示例中的全局中间件用于记录请求日志,但它也可以用于权限验证、请求体解析等更多场景。

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

相关推荐
程序员小续4 分钟前
再也不写 Class:React Hooks 完整实战与最佳实践
前端·javascript·react.js
芝士加8 分钟前
一个有趣的搜索神器:pinyin-match
前端·javascript·开源
一只大黑洋16 分钟前
Clipboard.js 复制内容
前端·javascript·vue.js
然我19 分钟前
从 “只会聊天” 到 “能办实事”:OpenAI Function Call 彻底重构 AI 交互逻辑(附完整接入指南)
前端·javascript·人工智能
鹏多多21 分钟前
vue混入mixins详解和生命周期影响
前端·javascript·vue.js
汪子熙22 分钟前
HTML 中的 Bidirectional Isolate (bdi) 元素深入解析
前端·javascript
Mintopia28 分钟前
在浏览器里“养”一只会写字的仓鼠——AI SSE 流式文本生成全攻略
前端·javascript·aigc
文博知浅31 分钟前
时隔4个月,500+star,鸿蒙ArkTS vscode插件1.x已发布🎉完全重构,补全、类型提示、SDK下载管理切换一应俱全,更多新功能正在规划中...
前端·javascript·harmonyos
专业抄代码选手32 分钟前
从 Fiber 到 DOM:深入理解 React 渲染
javascript·面试
墨鸦_Cormorant1 小时前
MQTT(轻量级消息中间件)基本使用指南
mqtt·中间件·消息中间件