目录
[1. 目录结构](#1. 目录结构)
[2. 代码实现](#2. 代码实现)
[2.1 安装依赖](#2.1 安装依赖)
[2.2 app.js - 主文件](#2.2 app.js - 主文件)
[2.3 logger.js - 自定义中间件](#2.3 logger.js - 自定义中间件)
[3. 程序运行结果](#3. 程序运行结果)
[4. 总结](#4. 总结)
中间件是Node.js中Express框架的核心概念之一,它允许你在请求和响应的生命周期中插入自定义的处理逻辑。中间件可以用来处理请求、响应、错误等操作,极大地提高了代码的可重用性和灵活性。
1. 目录结构
bash
/your-project
├── app.js # 主文件,启动应用
├── middleware
│ └── logger.js # 自定义中间件,记录请求信息
└── package.json # 项目依赖管理文件
2. 代码实现
2.1 安装依赖
首先,确保你已经安装了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 logger = require('./middleware/logger');
// 使用自定义中间件
app.use(logger);
// 路由定义
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.js
中使用app.use(logger)
来注册自定义的中间件logger.js
。该中间件会在每个请求到达路由之前被调用。
2.3 logger.js
- 自定义中间件
中间件函数可以做任何事情,比如记录日志、处理请求体、验证权限等。在这里,我们编写一个简单的日志记录中间件。
javascript
// middleware/logger.js
const logger = (req, res, next) => {
console.log(`${req.method} request made to ${req.url}`);
next(); // 调用 next() 继续下一个中间件或路由处理
};
module.exports = logger;
说明:
-
logger
中间件会记录每个请求的HTTP方法和请求的URL。 -
next()
是一个必须调用的函数,它告诉Express继续执行下一个中间件或路由处理。
3. 程序运行结果
当你运行node app.js
并访问以下地址时,控制台会显示请求的日志信息:
-
访问
http://localhost:3000/
时,控制台输出:javascriptGET request made to /
-
访问
http://localhost:3000/about
时,控制台输出:javascriptGET request made to /about
4. 总结
中间件是在Express中间请求和响应之间执行的代码块,它非常适合处理日志记录、权限验证、请求数据处理等任务。通过app.use()
可以将中间件注册到应用中。在本教程中,我们创建了一个简单的日志中间件,并展示了如何在主应用中使用它。希望这篇文章能帮助你更好地理解Node.js中间件的概念及其使用方法。