📜  express pourquoi mettre bodyparser avant router - Javascript(1)

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

为什么在Express中需要将body-parser设置在router之前

当使用Express来创建Web应用程序时,我们通常需要处理从客户端发送的请求参数。其中一种方式是使用 body-parser middleware来解析请求主体中的参数。

在Express的早期版本中,将 body-parser 添加到 router 中会导致无法正常解析请求主体中的参数。因此,必须将 body-parser middleware 添加到 router 之前,以便在 router 处理请求之前解析参数。

现在的Express版本已经将 body-parser middleware 集成到了核心模块中,但是我们仍然需要确保先将其设置在 router 之前。

下面是一个示例代码,演示如何在Express中正确配置 body-parser middleware:

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

const app = express();

// 将body-parser添加到Express应用程序中
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

// 这里设置路由前的middleware
app.use((req, res, next) => {
  console.log('middleware before router');
  next();
});

// 路由
app.get('/', (req, res) => {
  console.log('GET request to /');
  res.send('Hello World!');
});

// 这里设置路由后的middleware
app.use((req, res, next) => {
  console.log('middleware after router');
  next();
});

// 启动应用程序
app.listen(3000, () => {
  console.log('Example app listening on port 3000!');
});

在上面的代码中,我们首先将 body-parser middleware 添加到Express应用程序中,然后再将路由添加到应用程序。在路由添加之前,我们可以添加任何适当的middleware来处理请求。在路由添加之后,也可以添加middleware来处理响应或其他任何操作。主要是要确保 body-parser middleware 在设置路由之前被添加。

总的来说,在Express中使用 body-parser middleware可以很容易地处理从客户端发送的请求。但是,为了确保正常解析请求主体中的参数, body-parser middleware 必须在 router 之前添加到Express应用程序中。通过遵循这种模式,我们可以轻松地创建强大和功能丰富的Web应用程序。