教程 express tutorial

常用中间件列表

在 Express 应用中,中间件用于处理请求和响应的各个环节。中间件可以帮助你处理请求数据、记录日志、验证身份、处理错误等。以下是一些常用的中间件,它们在开发 Express 应用时非常有用。

1. body-parser

body-parser 中间件用于解析请求体,尤其是在处理 POST 请求时非常重要。它能够将 JSON 数据、URL 编码的数据、以及 multipart 表单数据解析到 req.body 中。

安装

bash
npm install body-parser

`

使用示例

js
const express = require('express');
const bodyParser = require('body-parser');
const app = express();

// 解析 JSON 格式的请求体
app.use(bodyParser.json());

// 解析 URL 编码的请求体
app.use(bodyParser.urlencoded({ extended: true }));

2. morgan

morgan 中间件用于记录 HTTP 请求日志。它提供了多种日志格式,能够记录请求的时间、请求路径、请求方法、响应状态等信息。

安装

bash
npm install morgan

使用示例

js
const express = require('express');
const morgan = require('morgan');
const app = express();

// 使用 "tiny" 格式记录请求日志
app.use(morgan('tiny'));

3. cors

cors 中间件用于处理跨域请求。它允许服务器指定哪些源(origin)可以访问该服务器的资源。在开发 Web 应用时,常常需要解决前后端分离时跨域访问的问题。

安装

bash
npm install cors

使用示例

js
const express = require('express');
const cors = require('cors');
const app = express();

// 允许所有域名访问
app.use(cors());

4. express-session

express-session 中间件用于在 Express 中管理会话。它通过服务器端存储会话信息,使用户能够在多个请求之间保持状态(如登录状态)。

安装

bash
npm install express-session

使用示例

js
const express = require('express');
const session = require('express-session');
const app = express();

// 使用 express-session 中间件配置会话
app.use(session({
  secret: 'mySecretKey',  // 会话加密密钥
  resave: false,          // 是否在每次请求时重新保存会话
  saveUninitialized: true // 是否保存未初始化的会话
}));

cookie-parser 中间件用于解析请求中的 cookies。它将请求中的 cookie 字段解析为一个 JavaScript 对象,方便访问和操作。

安装

bash
npm install cookie-parser

使用示例

js
const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();

// 使用 cookie-parser 中间件
app.use(cookieParser());

// 访问 cookies
app.get('/', (req, res) => {
  console.log(req.cookies);  // 获取所有 cookies
  res.send('Cookies accessed!');
});

6. helmet

helmet 是一组用于加强应用安全性的中间件集合。它通过设置各种 HTTP 头部,保护 Express 应用免受一些常见的 Web 漏洞攻击。

安装

bash
npm install helmet

使用示例

js
const express = require('express');
const helmet = require('helmet');
const app = express();

// 启用 Helmet 中间件
app.use(helmet());

7. compression

compression 中间件用于启用 HTTP 响应的压缩。它能够减少传输的数据量,提高应用的性能,尤其在处理大量数据时非常有用。

安装

bash
npm install compression

使用示例

js
const express = require('express');
const compression = require('compression');
const app = express();

// 启用响应压缩
app.use(compression());

8. multer

multer 是一个用于处理 multipart/form-data 类型的中间件,常用于处理文件上传。它将上传的文件存储到指定的路径并在 req.file 或 req.files 中提供。

安装

bash
npm install multer

使用示例

js
const express = require('express');
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
const app = express();

// 处理文件上传
app.post('/upload', upload.single('file'), (req, res) => {
  console.log(req.file);  // 打印上传的文件信息
  res.send('File uploaded successfully!');
});

9. passport

passport 是一个强大的身份验证中间件,它支持多种认证策略(如本地认证、社交登录等),并允许在 Express 中轻松实现用户身份验证。

安装

bash
npm install passport passport-local

使用示例

js
const express = require('express');
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const app = express();

// 配置 Passport 本地策略
passport.use(new LocalStrategy((username, password, done) => {
  // 验证用户名和密码
  if (username === 'user' && password === 'password') {
    return done(null, { username: 'user' });
  } else {
    return done(null, false);
  }
}));

app.use(passport.initialize());

app.post('/login', passport.authenticate('local', {
  successRedirect: '/dashboard',
  failureRedirect: '/login',
}));

10. rate-limit

rate-limit 中间件用于限制请求频率,防止恶意攻击(如 DoS 攻击)。它可以限制一定时间内的请求次数,超出限制后返回错误。

安装

bash
npm install express-rate-limit

使用示例

js
const express = require('express');
const rateLimit = require('express-rate-limit');
const app = express();

// 创建一个请求频率限制器
const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15分钟
  max: 100, // 每个IP最多可以发送100个请求
  message: 'Too many requests from this IP, please try again later.'
});

// 启用频率限制
app.use(limiter);

11. flash

flash 中间件用于在 Express 应用中处理一次性消息(如错误、成功提示等)。它允许您在用户请求后显示一次性的消息。

安装

bash
npm install connect-flash

使用示例

js
const express = require('express');
const flash = require('connect-flash');
const app = express();

// 使用 flash 中间件
app.use(flash());

// 设置一次性消息
app.get('/set-message', (req, res) => {
  req.flash('info', 'Hello, this is a flash message!');
  res.redirect('/show-message');
});

// 显示一次性消息
app.get('/show-message', (req, res) => {
  const message = req.flash('info');
  res.send(message);
});

总结

以上是一些常用的 Express 中间件,它们可以帮助您处理请求体、实现日志记录、加强应用的安全性、处理跨域问题、管理会话等功能。使用合适的中间件可以大大简化开发过程,提升应用的可维护性和扩展性。根据应用的具体需求,您可以选择适合的中间件来增强 Express 应用的功能。