# @dotcom-reliability-kit/serialize-request 中文文档

规范地址：https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/

版本：5\.0\.2
npm 元数据更新时间：2026-11-11T10:55:09.106Z
中文译文更新时间：2026-11-12T21:53:25.806Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40dotcom-reliability-kit/serialize-request
原文对照：https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/?lang=original
项目主页：https://github.com/Financial-Times/dotcom-reliability-kit/tree/main/packages/serialize-request#readme
源码仓库：https://github.com/Financial-Times/dotcom-reliability-kit

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

- 包体积（解压后）：21.6 kB，7 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：^22\.12 \|\| ^24 \|\| ^26
- 运行依赖：0 个
- 首次发布：2022-05-25T15:20:37.085Z
- 最新版本发布：2026-11-11T10:55:08.852Z
- 近 30 天下载量：4411（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：25（近 12 个月 4 个）

## 中文简介

以对日志、查看引擎和转换到JSON的方式序列化请求对象的功能

## 安装

```sh
npm install @dotcom-reliability-kit/serialize-request
```

也可以使用：`pnpm add @dotcom-reliability-kit/serialize-request`、`yarn add @dotcom-reliability-kit/serialize-request`、`bun add @dotcom-reliability-kit/serialize-request`

## README

# @dotcom-可靠性-kit/序列化-请求

串行请求对象的效用函数( E)[快递](https://expressjs.com/en/4x/api.html#req) 或者说 [来信](https://nodejs.org/api/http.html#class-httpincomingmessage))以对伐木机,取景引擎友好的方式,并转换为JSON. 此模块是 [FT.com 可靠性工具包](https://github.com/Financial-Times/dotcom-reliability-kit#readme)。 。 。 .

-   [使用量](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-usage)
    -   [`serializeRequest`](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-serializerequest)
    -   [配置选项](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-configuration-options)
        -   [`includeHeaders`](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-optionsincludeheaders)
    -   [`SerializedRequest` 类型](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-serializedrequest-type)
        -   [`SerializedRequest.id`](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-serializedrequestid)
        -   [`SerializedRequest.method`](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-serializedrequestmethod)
        -   [`SerializedRequest.url`](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-serializedrequesturl)
        -   [`SerializedRequest.headers`](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-serializedrequestheaders)
        -   [`SerializedRequest.route`](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-serializedrequestroute)
-   [移动](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-migrating)
-   [捐款](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-contributing)
-   [许可证](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-license)

## 使用量

安装 `@dotcom-reliability-kit/serialize-request` 作为依附关系:

```bash
npm install --save @dotcom-reliability-kit/serialize-request
```

在代码中包含 :

```js
import serializeRequest from '@dotcom-reliability-kit/serialize-request';
```

> \[TIP\] 如果您使用此软件包并带有 TypeScript , 我们建议您使用以下设置: `tsconfig.json` 避免类型错误的文件 :
> 
> ```json
> {
>     "esModuleInterop": true,
>     "module": "nodenext",
>     "moduleResolution": "nodenext"
> }
> ```

### `serializeRequest`

这个 `serializeRequest` 函数接受类似请求的对象(例如: `Express.Request` 对象 `method` 财务报告和审定财务报表 `url` 属性)并返回一个普通 JavaScript 对象(符合 [`SerializedRequest` 类型](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-serializedrequest-type)包含相关属性。 下面的例子假设: `app` 是快取应用程序 :

```js
app.get('/fruit/:fruitId', (request, response, next) => {
    console.log(serializeRequest(request));
    next();
});
// {
//     id: 'request137',
//     method: 'GET',
//     url: '/fruit/feijoa',
//     headers: {
//         accept: '*/*'
//     },
//     route: {
//         path: '/fruit/:fruitId',
//         params: { fruitId: 'feijoa' }
//     }
// }
```

您也可以在普通对象中通过, 如果您已经有一个类似请求的对象:

```js
serializeRequest({
    method: 'get',
    url: '/hello'
});
```

### 配置选项

配置选项可以传递到 `serializeRequest` 函数作为第二个参数。 它期望一个有下面任何密钥的物体.

```js
serializeRequest(request, {
    // Config options go here
});
```

#### `options.includeHeaders`

在序列化的请求对象中包含一系列请求头。 这一定是个 `Array` 联 合 国 `String`s,每个字符串为页眉名. 重要的是,你不包括包括个人识别信息、API密钥或其他特权信息在内的信头.

此选项默认为 :

```js
[
    'accept',
    'accept-encoding',
    'accept-language',
    'content-type',
    'referer',
    'user-agent'
]
```

使用实例:

```js
serializeRequest(request, {
    includeHeaders: [
        'accept',
        'content-length',
        'content-type',
        'user-agent'
    ]
});
```

默认的套头也可以使用,所以如果想要添加新的包含头则不需要重复. 它可以作为 `DEFAULT_INCLUDED_HEADERS`数字 :

```js
import serializeRequest, { DEFAULT_INCLUDED_HEADERS } from '@dotcom-reliability-kit/serialize-request';

serializeRequest(request, {
    includeHeaders: [
        ...DEFAULT_INCLUDED_HEADERS,
        'my-custom-header'
    ]
});
```

### `SerializedRequest` 类型

这个 `SerializedRequest` 类型文档的返回值 [`serializeRequest` 函数](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-serializerequest)。它将具有以下属性,从给定的请求对象中提取它们.

#### `SerializedRequest.id`

这取自于 `request.headers['x-request-id']` 总是被扔到一个 `String`默认 `null`。 。 。 .

#### `SerializedRequest.method`

这取自于 `request.method` 总是被扔到一个 `String` 并切换到大写。 默认为 `"-"`。 。 。 .

#### `SerializedRequest.url`

这取自于 `request.url` 总是被扔到一个 `String`默认 `"/"`。 。 。 .

#### `SerializedRequest.headers`

这取自于 `request.headers` 属性,并被过滤到仅包含在 [`includeHeaders` 选项](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/#readme-optionsincludeheaders)。默认为空对象.

#### `SerializedRequest.route`

这是从 `request.route.path` (字符串)和 `request.params` (对象)如果它们存在并且符合下列特性: [Express 请求对象](https://expressjs.com/en/4x/api.html#req)默认 `undefined`。 。 。 .

## 移动

咨询 [移徙指南](https://npmcn.com/package/%40dotcom-reliability-kit/serialize-request/docs/migration.md) 如果你想要迁移到这个软件包的后期主要版本.

## 捐款

见 [可靠性工具包中心贡献指南](https://github.com/Financial-Times/dotcom-reliability-kit/blob/main/docs/contributing.md)。 。 。 .

## 许可证

凭 [麻省理工学院](https://github.com/Financial-Times/dotcom-reliability-kit/blob/main/LICENSE) 执照.  
版权:"2022","金融时报"有限公司.

## 常见问题

### @dotcom-reliability-kit/serialize-request 是什么？

以对日志、查看引擎和转换到JSON的方式序列化请求对象的功能

### 如何安装 @dotcom-reliability-kit/serialize-request？

在项目目录运行 npm install @dotcom-reliability-kit/serialize-request，或使用 pnpm add / yarn add / bun add。

### @dotcom-reliability-kit/serialize-request 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @dotcom-reliability-kit/serialize-request 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @dotcom-reliability-kit/serialize-request 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^22\.12 \|\| ^24 \|\| ^26。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @dotcom-reliability-kit/serialize-request 可以商用吗？

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

### @dotcom-reliability-kit/serialize-request 的下载量有多少？

根据 npm 官方下载统计，@dotcom-reliability-kit/serialize-request 在 2026/10/13 – 2026/11/11 这 30 天内被下载 4,411 次，日均约 147 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @dotcom-reliability-kit/serialize-request 还在维护吗？

最新版本 5\.0\.2 发布于 2026/11/11（2 天前）；至今共发布 25 个版本，其中过去 12 个月发布了 4 个；首次发布于 2022/05/25。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

