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的全局中间件!

相关推荐
Wpa.wk几秒前
自动化测试 - 文件上传 和 弹窗处理
开发语言·javascript·自动化测试·经验分享·爬虫·python·selenium
l1t3 分钟前
利用小米mimo为精确覆盖矩形问题C程序添加打乱函数求出更大的解
c语言·开发语言·javascript·人工智能·算法
composurext11 分钟前
录音切片上传
前端·javascript·css
程序员小寒11 分钟前
前端高频面试题:深拷贝和浅拷贝的区别?
前端·javascript·面试
zhougl99617 分钟前
Vue 中的 `render` 函数
前端·javascript·vue.js
跟着珅聪学java19 分钟前
HTML中设置<select>下拉框默认值的详细教程
开发语言·前端·javascript
想睡好26 分钟前
setup
前端·javascript·html
桜吹雪33 分钟前
DeepSeekV3.2模型内置Agent体验
javascript·人工智能
逆向新手36 分钟前
js逆向-某省特种设备aes加密研究
javascript·爬虫·python·逆向·js
我爱学习_zwj41 分钟前
动态HTTP服务器实战:解析请求与Mock数据
开发语言·前端·javascript