没有body-parser的快递输入JSON在哪里?

问题描述 投票:3回答:2

我知道body-parser及其作用。我很想知道使用express时请求中的数据在哪里。在body-parser解析输入之前存在哪种格式。

// parse urlencoded types to JSON
app.use(bodyParser.urlencoded({
    extended: true
}));

// parse various different custom JSON types as JSON
app.use(bodyParser.json({ type: 'application/*+json' }));

// parse some custom thing into a Buffer
app.use(bodyParser.raw({ type: 'application/vnd.custom-type' }));

// parse an HTML body into a string
app.use(bodyParser.text({ type: 'text/html' }));

如果没有使用这些数据,那么数据会在哪里?它将以哪种格式提供?

javascript node.js express node-modules body-parser
2个回答
2
投票

这在Node documentation中已经完全涵盖了。

传递给处理程序的请求对象实现ReadableStream接口。就像任何其他流一样,可以在其他地方收听或传输此流。我们可以通过收听流的“数据”和“结束”事件来直接从流中获取数据。

Express实际上是对Node.js HTTP服务器功能的扩展,包括扩展本机Request和Response对象。因此,您可以像native request object as well一样对待Express请求


1
投票

对特定路径发出POST请求(带有可选的查询参数)。请求的主体是POST数据的放置位置。默认情况下,Express会读取请求的标头,但不会读取请求的正文。读取和解析该请求主体是身体解析器中间件的工作,以便您可以轻松获取其数据。

如果没有使用这些数据,那么数据会在哪里?它将以哪种格式提供?

因此,如果您没有安装body-parser中间件或者没有与数据格式匹配的中间件版本,那么正文仍将在传入请求流中,等待读取。请求的req参数是可读流。数据将等待在该流中读取。

格式将是请求中的内容类型标头所说的格式。对于经典的表单帖子,它通常是application/x-www-form-urlencoded,但它可以设置为其他类型,如application/json。请求者决定要设置的内容类型,然后他们必须根据该标准对正文中的数据进行编码。

对于文件上传等内容,可以使用其他内容类型,例如multipart/form-data

© www.soinside.com 2019 - 2024. All rights reserved.