express的中间件

Express 中间件通常被描述为“洋葱圈模型”(Onion Model)。这个模型是用来形象化描述中间件的执行顺序和生命周期的。

Express 中,中间件是按顺序执行的,并且可以有两种类型的执行路径:

  1. 请求阶段(Request Phase):请求从外到内穿过中间件栈,直到到达路由处理函数或其他中间件。
  2. 响应阶段(Response Phase):响应会从内到外穿过中间件栈,直到返回给客户端。

假设中间件的执行顺序像洋葱的层次结构一样,每一层都是一个中间件。

  • 最外层的“皮”:表示请求到达的第一个中间件。每个中间件可以决定是否将控制权传递给下一个中间件,或者结束请求处理流程
  • 内层的“层次”:每个中间件都可以对请求对象 (req) 和响应对象 (res) 进行修改。
  • 内层的最中心:通常是路由处理函数,它会处理特定的请求,然后将响应返回给客户端。

当请求进入时,它按顺序进入每个中间件,直到达到路由处理函数或结束请求流程。然后,在响应阶段,Express 会按相反的顺序通过这些中间件,最终将响应返回给客户端。

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

// 第一个中间件
app.use((req, res, next) => {
  console.log('First Middleware');
  next();  // 将请求传递给下一个中间件
});

// 第二个中间件
app.use((req, res, next) => {
  console.log('Second Middleware');
  next();  // 将请求传递给下一个中间件
});

// 路由处理函数
app.get('/', (req, res) => {
  res.send('Hello, World!');
});

// 第三个中间件
app.use((req, res, next) => {
  console.log('Third Middleware');
  next();  // 你可以选择不调用 next() 来结束请求
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

如何结束请求?

使用 res.send()res.json()

app.use((req, res, next) => {
  // 发送响应并结束请求
  res.send('Request has been handled');
  // 后续的中间件和路由将不会再执行
});

 

 

 

posted @ 2025-03-09 21:22  我是格鲁特  阅读(65)  评论(0)    收藏  举报