📜  如何将中间件附加到路由定义 - Javascript (1)

📅  最后修改于: 2023-12-03 15:24:44.120000             🧑  作者: Mango

如何将中间件附加到路由定义 - Javascript

在Express框架中,中间件用于处理请求前和响应后的逻辑。它可以是一个函数、一个数组或一个组合多个中间件的字符串。

通过将中间件附加到路由定义中,可以使其适用于特定的路由。下面是一个例子:

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

// 中间件函数的定义
const myMiddleware = (req, res, next) => {
  console.log('This is my middleware!');
  next();
};

// 中间件附加到路由
app.get('/', myMiddleware, (req, res) => {
  res.send('Hello World!');
});

上面的代码中,定义了一个名为myMiddleware的中间件函数,它被附加到了根路由/上。当访问这个路由时,会执行中间件函数,打印This is my middleware!的信息并调用next(),然后继续执行后面的处理函数并返回一个Hello World!的响应。

也可以将多个中间件串联起来,像这样:

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

const middleware1 = (req, res, next) => {
  console.log('This is middleware 1!');
  next();
};

const middleware2 = (req, res, next) => {
  console.log('This is middleware 2!');
  next();
};

app.get('/', middleware1, middleware2, (req, res) => {
  res.send('Hello World!');
});

此时,访问根路由将依次执行middleware1middleware2这两个中间件函数。

在Express中,有一些内置的中间件可以直接通过app.use方法附加到应用程序实例中,如express.json()用于解析请求体中的JSON数据;express.urlencoded()用于解析Form表单数据。这些中间件会在所有路由定义之前进行执行。

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

app.use(express.json());
app.use(express.urlencoded({ extended: false }));

app.get('/', (req, res) => {
  res.send('Hello World!');
});

在上面的代码中,express.json()express.urlencoded()是在所有路由定义之前执行的两个内置中间件函数,用于处理请求体中的JSON数据和Form表单数据。