此中间件在 Express v4.17.0 及更高版本中可用。
这是 Express 中内置的中间件功能。它将传入的请求有效负载解析为 Buffer,并基于 body-parser。
返回将所有主体解析为 Buffer 并仅查看 Content-Type 标头与 type 选项匹配的请求的中间件。此解析器接受正文的任何 Unicode 编码,并支持 gzip 和 deflate 编码的自动膨胀。
包含解析数据的新 body Buffer 填充在中间件之后的 request 对象(即 req.body)上,如果没有要解析的主体、Content-Type 不匹配或发生错误,则填充一个空对象({})。
由于
req.body的形状基于用户控制的输入,因此该对象中的所有属性和值都是不可信的,应该在信任之前进行验证。例如,req.body.toString()可能以多种方式失败,例如堆叠多个解析器req.body可能来自不同的解析器。建议在调用缓冲区方法之前测试req.body是Buffer。
下表描述了可选 options 对象的属性。
| 属性 | 描述 | 类型 | 默认 |
|---|---|---|---|
inflate | 启用或禁用处理放气(压缩)的身体;当禁用时,瘪的身体会被拒绝。 | 布尔值 | true |
limit | 控制最大请求正文大小。如果这是一个数字,则该值指定字节数;如果是字符串,则将值传递给bytes库进行解析。 | 混合 | "100kb" |
type | 这用于确定中间件将解析的媒体类型。此选项可以是字符串、字符串数组或函数。如果不是函数,则 type 选项直接传递给 type-is 库,它可以是扩展名(如 bin)、mime 类型(如 application/octet-stream)或带有通配符的 mime 类型(如 */* 或 application/*)。如果是函数,则 type 选项被称为 fn(req),如果请求返回真值,则解析请求。 | 混合 | "application/octet-stream" |
verify | 此选项(如果提供)称为 verify(req, res, buf, encoding),其中 buf 是原始请求正文的 Buffer,encoding 是请求的编码。可以通过抛出错误来中止解析。 | 函数 | undefined |