收录了这篇文章
body-parser 是一个 Node.js 中间件,用于处理 HTTP 请求的 body 部分。它特别有用,当你的应用需要解析客户端发送过来的 POST 数据时。尽管 body-parser 曾经是 Express 的一部分,但现在它是一个独立的模块,并且需要单独安装。
下面是一个详细的教程来帮助你开始使用 body-parser。
第一步:安装 body-parser
首先,你需要通过 npm 安装 body-parser。在命令行中运行以下命令:
npm install body-parser
第二步:设置基本的 Express 应用
创建一个新的 Node.js 项目,并初始化一个基本的 Express 服务器。确保你已经安装了 Express:
npm install express
创建一个 app.js 文件并添加以下代码:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('App listening on port 3000!');
});
第三步:引入 body-parser
在你的 app.js 文件中引入 body-parser 并配置中间件。
const express = require('express');
const bodyParser = require('body-parser'); // 引入 body-parser
const app = express();
// 使用 body-parser 中间件
app.use(bodyParser.json()); // 解析 application/json 类型的数据
app.use(bodyParser.urlencoded({ extended: true })); // 解析 application/x-www-form-urlencoded 类型的数据
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('App listening on port 3000!');
});
第四步:处理 POST 请求
接下来,我们将添加一个路由来处理 POST 请求。假设你有一个表单,用户可以提交数据到这个端点。
1. 添加 POST 路由
在 app.js 文件中添加一个 POST 路由:
app.post('/submit', (req, res) => {
const data = req.body; // 获取请求体中的数据
console.log(data);
res.send('Data received successfully');
});
2. 创建表单
创建一个简单的 HTML 表单来测试你的 POST 路由。在 public 目录下创建一个名为 index.html 的文件,并添加以下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Simple Form</title>
</head>
<body>
<form action="/submit" method="POST">
<label for="name">Name:</label>
<input type="text" id="name" name="name" required>
<br>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<br>
<button type="submit">Submit</button>
</form>
</body>
</html>
第五步:访问表单和提交数据
确保你的 Express 服务器正在运行(node app.js),然后打开浏览器并访问 http://localhost:3000/index.html。填写表单并提交,你会看到终端中打印出提交的数据。
以上就是如何使用 body-parser 处理 HTTP 请求中的 body 部分的基本教程。你可以根据需要调整配置和路由以适应你的应用程序。
详细参数
Node.js 请求解析中间件。在处理程序之前,在中间件中解析传入的请求体,可在req.body属性下使用。
常见的四种Content-Type类型:
- application/x-www-form-urlencoded 常见的form提交
- multipart/form-data 文件提交
- application/json 提交json格式的数据
- text/xml 提交xml格式的数据
这个中间件不会解析multipart body,由于这种消息体很复杂而且也很大。对于multipart bodies,可以使用 multer
本模块提供了以下解析器
- JSON体解析器
- Raw解析器
- Text解析器
- URL-encoded form 解析器
可以通过body-parser 对象创建中间件,当接收到客户端请求时所有的中间件都会给req.body 添加属性,请求体为空,则解析为空{} (或者出现错误)。
官方文档:https://www.npmjs.com/package/body-parser
修改时间 2024-08-03