关于body-parser

是什么:

body-parser是一个HTTP请求体解析中间件,使用这个模块可以解析JSON、Raw、文本、URL-encoded格式的请求体,Express
框架中就是使用这个模块做为请求体解析中间件。请求体解析后,解析值都会被放到req.body属性,内容为空时是一个{}空对象。

为什么要用它:

//截取了项目代码中用superagent发送请求的片段
 request.post('/signUp')
            .send({name: action.name, password: action.password})

现在在接收端我想要取到发送请求时的参数,即name和password,该怎么取,我先输出一下req,看看都有什么

关于body-parser_第1张图片
req片段

这只是冰山一角,输出的req非常复杂,完全找不到我发送的参数在哪里,这个时候就需要对req进行解析了,当然可能有多种方式,在这里我们就说一下Express中常用的body-parser

如何用:

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

const app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded());

上面的代码我们引进了bodyparser,。最后两行模块会处理application/x-www-form-urlencodedapplication/json两种内容格式的请求体。现在我又输出了一下req,内容还是非常多,不过我发现它将我需要的参数都放到了一个名为body的对象中

关于body-parser_第2张图片
req片段

图中的name和password就是我在发送请求时发送的参数,这样一来我就可以用 req.body.namereq.body.password取到我想要的数据了.

上边的两行代码到底是什么意思,又做了什么呢,

1. bodyParser.json(options)

解析json格式
返回一个仅解析json格式数据的中间件。这个方法支持任意Unicode编码的请求体,且支持gzip和deflate编码的数据压缩.

关于body-parser_第3张图片
option

2.bodyParser.urlencoded(options)

解析文本格式
返回一个处理urlencoded数据的中间件。这个方法默认使用UTF-8编码,且支持gzip和deflate编码的数据压缩。解析后,其后的所有的req.body中将会是一个键值对对象。

关于body-parser_第4张图片
option

除了我们上边说得两种格式的解析,还有其他的

bodyParser.raw(options):解析二进制:

返回一个将所有数据做为Buffer
格式处理的中间件。这个方法支持gzip和deflate编码的数据压缩。解析后,其后的所有的req.body中将会是一个Buffer
数据。

bodyParser.text(options):解析文本格式

返回一个仅处理字符串格式处理的中间件。这个方法支持gzip和deflate编码的数据压缩。解析后,其后的所有的req.body中将会是一个字符串值

你可能感兴趣的:(关于body-parser)