📜  req.body 未定义 - Javascript (1)

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

介绍

在进行前后端交互时,通常会使用HTTP协议来传输数据。而在后端使用Node.js作为开发语言时,可以使用Express框架来简化开发流程。在处理HTTP请求时,可以使用req.body来获取请求体中的数据,但有时会出现req.body未定义的情况。

原因

Express框架默认不支持处理HTTP请求体中的数据,需要使用中间件body-parser来解析请求体。如果在使用req.body之前未使用body-parser中间件进行解析,则req.body会为undefined。

解决方案

安装body-parser:

npm install body-parser

使用body-parser中间件:

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

// 解析 application/json
app.use(bodyParser.json());

// 解析 application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));

// 处理POST请求
app.post('/api/data', function (req, res) {
  const data = req.body;
  // do something…

  res.send('success');
});

app.listen(3000, function () {
  console.log('Server started on port 3000');
});

以上代码中,使用了两个body-parser中间件来解析application/json和application/x-www-form-urlencoded格式的数据。在处理POST请求时,就可以使用req.body来获取请求体中的数据了。

总结起来,解决req.body未定义的问题需要安装并使用body-parser中间件。为了能够处理更多格式的数据,可以使用多个body-parser中间件,分别解析不同格式的数据。

参考资料