📜  bodyparser npm - Javascript (1)

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

body-parser npm - Javascript

body-parser是一个Express中间件,用于解析http请求中的请求体(request body)。通常,在POST和PUT请求中包含请求数据,因此需要将请求数据提取到JavaScript对象中方便使用。

安装

你可以通过npm安装body-parser模块

npm install --save body-parser
用法

在Express框架中,使用body-parser模块的基本用法如下:

首先,导入body-parser模块:

const bodyParser = require("body-parser");

然后,将其设置为Express应用程序的中间件:

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

现在你可以通过req.body属性访问请求体中的数据了:

app.post("/login", (req, res) => {
  const username = req.body.username;
  const password = req.body.password;
  // ... 进行其他操作
});
配置参数

在使用body-parser模块时,你可以根据需要使用不同的配置参数。

extended

当设置为false时,解析器会使用Node.js内置的querystring库来解析URL编码的请求体(即application/x-www-form-urlencoded),这将创建一个简单的键值对对象。当设置为true时,解析器会使用第三方库qs来解析请求体,这将创建一个更为复杂的嵌套对象。

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

默认值为true

limit

控制请求体的大小,以防止过大的请求体导致服务器拒绝请求。

app.use(bodyParser.json({ limit: "1mb" }));

默认值为"100kb"

支持的格式

body-parser模块支持各种不同格式的请求体,包括:

  • application/x-www-form-urlencoded
  • application/json
  • application/xml
  • text/plain
注意事项
  • body-parser只能处理那些Content-Type为application/x-www-form-urlencodedapplication/jsontext/plain的请求体。如果你需要处理其他类型的请求体,你需要使用其他的中间件或手动解析;
  • body-parser不会处理multipart/form-data类型的请求体,因为这种类型经常用来上传文件。上传文件的数据通常比较大,因此单独处理比较适合。你可以使用类似于multer的中间件来解析文件上传请求体;
  • 在使用body-parser时,你需要确保它是在路由中间件之前运行的,以便于路由能够访问到req.body属性。