# @bitgo/body-parser 中文文档

规范地址：https://npmcn.com/package/%40bitgo/body-parser/

版本：1\.15\.3
npm 元数据更新时间：2026-03-09T04:23:36.685Z
中文译文更新时间：2026-11-08T04:24:05.956Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40bitgo/body-parser
原文对照：https://npmcn.com/package/%40bitgo/body-parser/?lang=original
项目主页：https://github.com/expressjs/body-parser#readme
源码仓库：https://github.com/expressjs/body-parser

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：49.7 kB，10 个文件
- TypeScript 类型：未声明
- Node.js 要求：\>= 0\.8
- 运行依赖：10 个
- 首次发布：2022-08-19T23:11:56.216Z
- 最新版本发布：2022-08-19T23:11:56.554Z
- 近 30 天下载量：33199（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 0 个）

## 中文简介

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

## 安装

```sh
npm install @bitgo/body-parser
```

也可以使用：`pnpm add @bitgo/body-parser`、`yarn add @bitgo/body-parser`、`bun add @bitgo/body-parser`

## README

# 车体参数

[![NPM Version](https://img.shields.io/npm/v/body-parser.svg)](https://npmjs.org/package/body-parser) [![NPM Downloads](https://img.shields.io/npm/dm/body-parser.svg)](https://npmjs.org/package/body-parser) [![Build Status](https://img.shields.io/travis/expressjs/body-parser/master.svg)](https://travis-ci.org/expressjs/body-parser) [![Test Coverage](https://img.shields.io/coveralls/expressjs/body-parser/master.svg)](https://coveralls.io/r/expressjs/body-parser?branch=master) [![Gratipay](https://img.shields.io/gratipay/dougwilson.svg)](https://www.gratipay.com/dougwilson/)

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

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

[在 Node.js 中了解 HTTP 交易的解剖](https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/)。 。 。 .

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

-   [公交车司机](https://www.npmjs.org/package/busboy#readme) 财务报告和审定财务报表 [连接巴士男孩](https://www.npmjs.org/package/connect-busboy#readme)
-   [多当事方](https://www.npmjs.org/package/multiparty#readme) 财务报告和审定财务报表 [连接- 多方](https://www.npmjs.org/package/connect-multiparty#readme)
-   [厉害](https://www.npmjs.org/package/formidable#readme)
-   [摩尔特](https://www.npmjs.org/package/multer#readme)

本模块提供以下解析器:

-   [JSON 身体剖析器](https://npmcn.com/package/%40bitgo/body-parser/#readme-bodyparserjsonoptions)
-   [原始正文解析器](https://npmcn.com/package/%40bitgo/body-parser/#readme-bodyparserrawoptions)
-   [文本正文解析器](https://npmcn.com/package/%40bitgo/body-parser/#readme-bodyparsertextoptions)
-   [URL 编码的正文解析器](https://npmcn.com/package/%40bitgo/body-parser/#readme-bodyparserurlencodedoptions)

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

-   [机构](https://www.npmjs.org/package/body#readme)
-   [联合体](https://www.npmjs.org/package/co-body#readme)

## 安装

```sh
$ npm install body-parser
```

## API 密码

```js
var bodyParser = require('body-parser')
```

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

此模块返回的各种错误在 [错误部分](https://npmcn.com/package/%40bitgo/body-parser/#readme-errors)。 。 。 .

### bodyParser.json(选项)

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

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

#### 选项

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

##### 充电

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

##### 限制

控制最大请求体积。 如果这是数字, 那么值 指定字节数;如果是字符串,则将数值传递给 [字节](https://www.npmjs.com/package/bytes) 用于解析的库。 默认 改为 `'100kb'`。 。 。 .

##### 复活器

这个 `reviver` 选项直接传递到 `JSON.parse` 作为第二个 参数。 您可以找到关于此参数的更多信息 [在关于JSON的MDN文档中。 剖析](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Example.3A_Using_the_reviver_parameter)。 。 。 .

##### 严格

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

##### 类型

这个 `type` 选项用于确定中间软件的介质类型 剖析。 此选项可以是函数或字符串 。 如果一个弦, `type` 选项 直接传递给 [类型是](https://www.npmjs.org/package/type-is#readme) 库和此选项可以是扩展名( 如 `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`。 。 。 .

##### 限制

控制最大请求体积。 如果这是数字, 那么值 指定字节数;如果是字符串,则将数值传递给 [字节](https://www.npmjs.com/package/bytes) 用于解析的库。 默认 改为 `'100kb'`。 。 。 .

##### 类型

这个 `type` 选项用于确定中间软件的介质类型 剖析。 此选项可以是函数或字符串 。 如果一个弦, `type` 选项 直接传递给 [类型是](https://www.npmjs.org/package/type-is#readme) 库和此选项可以是扩展名( 如 `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`。 。 。 .

##### 限制

控制最大请求体积。 如果这是数字, 那么值 指定字节数;如果是字符串,则将数值传递给 [字节](https://www.npmjs.com/package/bytes) 用于解析的库。 默认 改为 `'100kb'`。 。 。 .

##### 类型

这个 `type` 选项用于确定中间软件的介质类型 剖析。 此选项可以是函数或字符串 。 如果一个弦, `type` 选项 直接传递给 [类型是](https://www.npmjs.org/package/type-is#readme) 库和此选项可以是扩展名( 如 `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 库](https://www.npmjs.org/package/qs#readme)。 。 。 .

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

##### 充电

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

##### 限制

控制最大请求体积。 如果这是数字, 那么值 指定字节数;如果是字符串,则将数值传递给 [字节](https://www.npmjs.com/package/bytes) 用于解析的库。 默认 改为 `'100kb'`。 。 。 .

##### 参数范围

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

##### 类型

这个 `type` 选项用于确定中间软件的介质类型 剖析。 此选项可以是函数或字符串 。 如果一个弦, `type` 选项 直接传递给 [类型是](https://www.npmjs.org/package/type-is#readme) 库和此选项可以是扩展名( 如 `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 编码解析器为 顶级中间软件,将解析所有收到的请求的正文. 这是最简单的设定.

```js
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与 快报.

```js
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` 中间的软件会分析.

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

## 许可证

[麻省理工学院](https://npmcn.com/package/%40bitgo/body-parser/LICENSE)

## 常见问题

### @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 和提交记录判断。

