📅  最后修改于: 2023-12-03 15:29:38.149000             🧑  作者: Mango
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
模块时,你可以根据需要使用不同的配置参数。
当设置为false
时,解析器会使用Node.js内置的querystring
库来解析URL编码的请求体(即application/x-www-form-urlencoded
),这将创建一个简单的键值对对象。当设置为true
时,解析器会使用第三方库qs
来解析请求体,这将创建一个更为复杂的嵌套对象。
app.use(bodyParser.urlencoded({ extended: false }));
默认值为true
。
控制请求体的大小,以防止过大的请求体导致服务器拒绝请求。
app.use(bodyParser.json({ limit: "1mb" }));
默认值为"100kb"
。
body-parser
模块支持各种不同格式的请求体,包括:
body-parser
只能处理那些Content-Type为application/x-www-form-urlencoded
、application/json
和text/plain
的请求体。如果你需要处理其他类型的请求体,你需要使用其他的中间件或手动解析;body-parser
不会处理multipart/form-data类型的请求体,因为这种类型经常用来上传文件。上传文件的数据通常比较大,因此单独处理比较适合。你可以使用类似于multer
的中间件来解析文件上传请求体;body-parser
时,你需要确保它是在路由中间件之前运行的,以便于路由能够访问到req.body
属性。