@bitgo/body-parser

中文文档
1.15.3发布于 2022/08/20MIT近 30 天下载 3.3万

节点.js 身体剖析中间软件

中文使用文档
文档目录19 节
  1. 安装
  2. API 密码
  3. bodyParser.json(选项)
  4. bodyParser.raw(选项)
  5. bodyParser.text(选项)
  6. bodyParser.urlencoded( 选项)
  7. 错误
  8. 不支持的内容编码
  9. 请求已中止
  10. 请求实体太大
  11. 请求大小与内容长度不符
  12. 不应设置流编码
  13. 不支持的字符集“ BOGUS ”
  14. 不支持的内容编码"bogus"
  15. 实例
  16. 特快/连通顶级通用
  17. 特快路线
  18. 更改已接受的解析器类型
  19. 许可证

车体参数

NPM Version NPM Downloads Build Status Test Coverage Gratipay

节点.js身体剖析中间软件.

在您处理器前的中间软件中分析收到的请求机构, 可用 下划线 req.body 属性.

在 Node.js 中了解 HTTP 交易的解剖。 。 。 .

这不处理多部分机构由于其复杂性和典型性 巨大的自然。 对于多部分机构,您可能感兴趣的是: 模块 :

本模块提供以下解析器:

你可能感兴趣的其他身体分析器:

安装

$ npm install body-parser

API 密码

var bodyParser = require('body-parser')

这个 bodyParser 对象会暴露各种工厂来创建中间软件。 全体 中间软件将覆盖 req.body 与解析后的身体相关的财产,或 空对象( r){}),如果没有身体来解析(或返回错误).

此模块返回的各种错误在 错误部分。 。 。 .

bodyParser.json(选项)

返回只解析的中间软件 json。此解析器接受任何 Unicode 机身编码和支持自动膨胀 gzip 财务报告和审定财务报表 deflate 编码.

一个新的 body 包含解析数据的对象在 request 中间软件(即:. req.body) (中文(简体) ).

选项

这个 json 函数选择选项 options 可能包含其中任一对象的物体 下列密钥:

充电

设定为 true,然后膨胀(压缩)而膨胀 false,减肥后的身体被拒绝。 默认为 true。 。 。 .

限制

控制最大请求体积。 如果这是数字, 那么值 指定字节数;如果是字符串,则将数值传递给 字节 用于解析的库。 默认 改为 '100kb'。 。 。 .

复活器

这个 reviver 选项直接传递到 JSON.parse 作为第二个 参数。 您可以找到关于此参数的更多信息 在关于JSON的MDN文档中。 剖析。 。 。 .

严格

设定为 true,将仅接受数组和对象 false 将 接受任何东西 JSON.parse 接受这个建议。 默认为 true。 。 。 .

类型

这个 type 选项用于确定中间软件的介质类型 剖析。 此选项可以是函数或字符串 。 如果一个弦, type 选项 直接传递给 类型是 库和此选项可以是扩展名( 如 json),一种mime类型(如: application/json),或带有通配符的mime类型(如 */* 或者说 */json) (中文(简体) ). 如果一个函数,则 type 选项称为 fn(req) 请求是 如果返回一个真实值, 解析 。 默认为 application/json。 。 。 .

校验

这个 verify 选项,如果提供,则称为 verify(req, res, buf, encoding), (中文(简体) ), 地点 buf 是一个 Buffer 原始请求体和 encoding 这是 请求的编码。 解析可以通过扔出错误来中止 .

bodyParser.raw(选项)

返回将所有正体描述为 Buffer此解析器 支持自动通货膨胀 gzip 财务报告和审定财务报表 deflate 编码.

一个新的 body 包含解析数据的对象在 request 中间软件(即:. req.body) (中文(简体) ). 这将是一个 Buffer 对象 身体的形状.

选项

这个 raw 函数选择选项 options 可能包含其中任一对象的物体 下列密钥:

充电

设定为 true,然后膨胀(压缩)而膨胀 false,减肥后的身体被拒绝。 默认为 true。 。 。 .

限制

控制最大请求体积。 如果这是数字, 那么值 指定字节数;如果是字符串,则将数值传递给 字节 用于解析的库。 默认 改为 '100kb'。 。 。 .

类型

这个 type 选项用于确定中间软件的介质类型 剖析。 此选项可以是函数或字符串 。 如果一个弦, type 选项 直接传递给 类型是 库和此选项可以是扩展名( 如 bin),一种mime类型(如: application/octet-stream),或带有通配符的mime类型(如 */* 或者说 application/*) (中文(简体) ). 如果一个函数,则 type 选项称为 fn(req) 如果请求返回一个真实值,则对其进行解析。 默认为 application/octet-stream。 。 。 .

校验

这个 verify 选项,如果提供,则称为 verify(req, res, buf, encoding), (中文(简体) ), 地点 buf 是一个 Buffer 原始请求体和 encoding 这是 请求的编码。 解析可以通过扔出错误来中止 .

bodyParser.text(选项)

返回将所有天体描述为字符串的中间软件。 此解析器支持 自动通货膨胀 gzip 财务报告和审定财务报表 deflate 编码.

一个新的 body 包含解析数据的字符串包含在 request 中间软件(即:. req.body) (中文(简体) ). 这将是弦 躯体.

选项

这个 text 函数选择选项 options 可能包含其中任一对象的物体 下列密钥:

默认字符集

如果字符集不是,请指定文本内容的默认字符集 定义 Content-Type 请求头。 默认为 utf-8。 。 。 .

充电

设定为 true,然后膨胀(压缩)而膨胀 false,减肥后的身体被拒绝。 默认为 true。 。 。 .

限制

控制最大请求体积。 如果这是数字, 那么值 指定字节数;如果是字符串,则将数值传递给 字节 用于解析的库。 默认 改为 '100kb'。 。 。 .

类型

这个 type 选项用于确定中间软件的介质类型 剖析。 此选项可以是函数或字符串 。 如果一个弦, type 选项 直接传递给 类型是 库和此选项可以是扩展名( 如 txt),一种mime类型(如: text/plain),或带有通配符的mime类型(如 */* 或者说 text/*) (中文(简体) ). 如果一个函数,则 type 选项称为 fn(req) 请求是 如果返回一个真实值, 解析 。 默认为 text/plain。 。 。 .

校验

这个 verify 选项,如果提供,则称为 verify(req, res, buf, encoding), (中文(简体) ), 地点 buf 是一个 Buffer 原始请求体和 encoding 这是 请求的编码。 解析可以通过扔出错误来中止 .

bodyParser.urlencoded( 选项)

返回只解析的中间软件 urlencoded 尸体 尸体 尸体 尸体 尸体 此解析器接受 只有身体的UTF-8编码,并支持自动膨胀 gzip 财务报告和审定财务报表 deflate 编码.

一个新的 body 包含解析数据的对象在 request 中间软件(即:. req.body) (中文(简体) ). 此对象将包含 键值对,其中值可以是字符串或数组(当 extended 实值 false),或任何类型(何时) extended 实值 true) (中文(简体) ).

选项

这个 urlencoded 函数选择选项 options 可能包含的对象 下列任何一键:

延长

这个 extended 选项允许在解析 URL 编码数据时选择 与 querystring 库( 当 false)或为: qs 库( 当 true) (中文(简体) ). “ 扩展” 语法允许丰富的对象和阵列 编码到 URL 编码格式,允许类似 JSON 的经验 使用 URL 编码。 详情请问 参见 qs 库。 。 。 .

默认为 true,但使用默认值已贬值。 请 研究与研究 qs 财务报告和审定财务报表 querystring 选择 适当的设置.

充电

设定为 true,然后膨胀(压缩)而膨胀 false,减肥后的身体被拒绝。 默认为 true。 。 。 .

限制

控制最大请求体积。 如果这是数字, 那么值 指定字节数;如果是字符串,则将数值传递给 字节 用于解析的库。 默认 改为 '100kb'。 。 。 .

参数范围

这个 parameterLimit 选项控制参数的最大数量 允许在 URL 编码数据中。 如果请求包含更多参数 超过此值,413将返回客户端。 默认为 1000。 。 。 .

类型

这个 type 选项用于确定中间软件的介质类型 剖析。 此选项可以是函数或字符串 。 如果一个弦, type 选项 直接传递给 类型是 库和此选项可以是扩展名( 如 urlencoded),一种mime类型(如: application/x-www-form-urlencoded),或带有通配符的mime类型(如 */x-www-form-urlencoded) (中文(简体) ). 如果一个函数,则 type 选项称为 fn(req) 如果请求返回一个真实值,则对其进行解析。 默认 改为 application/x-www-form-urlencoded。 。 。 .

校验

这个 verify 选项,如果提供,则称为 verify(req, res, buf, encoding), (中文(简体) ), 地点 buf 是一个 Buffer 原始请求体和 encoding 这是 请求的编码。 解析可以通过扔出错误来中止 .

错误

此模块提供的中间软件根据错误产生错误 解析时的条件。 错误通常有: status 属性 包含建议的 HTTP 响应代码和一个 body 包含属性 读取体,如果有的话.

以下是常见错误, 尽管任何错误都可以通过 出于各种原因.

不支持的内容编码

当请求中出现 Content-Encoding 标题 包含编码,但“通货膨胀”选项被设定为 false编辑 status 属性设定为 415。 。 。 .

请求已中止

当客户端在读取前中止请求时, 此错误将发生 身体结束了。 这个 received 属性将被设定为 请求中止前收到的字节数 expected 属性是 设置为预期字节数。 这个 status 属性设定为 400。 。 。 .

请求实体太大

当请求主体的大小大于"限制"时,这个错误将发生 选项。 这个 limit 属性将被设定为字节限制和 length 属性将被设定为请求对象的长度 。 这个 status 属性是 设置为 413。 。 。 .

请求大小与内容长度不符

此错误将发生在请求的长度与时间长度不符时 页:1 Content-Length 头曰. 这通常发生在请求不正确时, 通常在 Content-Length 信头是根据字符计算的 而不是字节。 这个 status 属性设定为 400。 。 。 .

不应设置流编码

此错误将发生在名为 req.setEncoding 前一个方法 这个中间的软件。 此模块仅在字节上直接运行, 您无法 调用 req.setEncoding 当使用此模块时。 这个 status 属性设定为 500。 。 。 .

不支持的字符集“ BOGUS ”

当请求中包含字符集参数时,此错误将发生 Content-Type 标题,但 iconv-lite 模块不支持它 OR parser 不支持它。 字符集也包含在信息中 和《公约》中 charset 属性。 这个 status 属性设定为 415。 。 。 .

不支持的内容编码"bogus"

当请求中出现 Content-Encoding 标题 包含一个不支持的编码。 编码包含在信件中 以及《公约》 encoding 属性。 这个 status 属性设定为 415。 。 。 .

实例

特快/连通顶级通用

此示例显示添加一个通用 JSON 和 URL 编码解析器为 顶级中间软件,将解析所有收到的请求的正文. 这是最简单的设定.

var express = require('express')
var bodyParser = require('body-parser')

var app = express()

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

app.use(function (req, res) {
  res.setHeader('Content-Type', 'text/plain')
  res.write('you posted:\n')
  res.end(JSON.stringify(req.body, null, 2))
})

特快路线

这个例子表明,在路径中专门添加了正体解析器 需要他们。 一般来说,这是最推荐的方法 使用身体-parser与 快报.

var express = require('express')
var bodyParser = require('body-parser')

var app = express()

// create application/json parser
var jsonParser = bodyParser.json()

// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })

// POST /login gets urlencoded bodies
app.post('/login', urlencodedParser, function (req, res) {
  if (!req.body) return res.sendStatus(400)
  res.send('welcome, ' + req.body.username)
})

// POST /api/users gets JSON bodies
app.post('/api/users', jsonParser, function (req, res) {
  if (!req.body) return res.sendStatus(400)
  // create user in req.body
})

更改已接受的解析器类型

所有分析师都接受 type 选项,允许您更改 Content-Type 中间的软件会分析.

// 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' }))

许可证

麻省理工学院

版本与发布记录

@bitgo/body-parser 共发布 1 个版本,首次发布于 2022/08/20;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.15.3latest2022/08/204 年前

关于 @bitgo/body-parser 的常见问题

@bitgo/body-parser 是什么?

节点.js 身体剖析中间软件

如何安装 @bitgo/body-parser?

在项目目录运行 npm install @bitgo/body-parser,或使用 pnpm add / yarn add / bun add。

@bitgo/body-parser 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/bitgo__body-parser 是否存在。

@bitgo/body-parser 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 0.8。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@bitgo/body-parser 可以商用吗?

@bitgo/body-parser 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@bitgo/body-parser 的下载量有多少?

根据 npm 官方下载统计,@bitgo/body-parser 在 2026/10/08 – 2026/11/06 这 30 天内被下载 33,199 次,日均约 1,107 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bitgo/body-parser 还在维护吗?

最新版本 1.15.3 发布于 2022/08/20(4 年前);至今共发布 1 个版本,其中过去 12 个月发布了 0 个;首次发布于 2022/08/20。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。