# @azure/core-rest-pipeline 中文文档

规范地址：https://npmcn.com/package/%40azure/core-rest-pipeline/

版本：1\.25\.0
npm 元数据更新时间：2026-07-13T19:11:54.454Z
中文译文更新时间：2026-11-07T13:01:12.461Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40azure/core-rest-pipeline
原文对照：https://npmcn.com/package/%40azure/core-rest-pipeline/?lang=original
项目主页：https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/core-rest-pipeline/README.md
源码仓库：https://github.com/Azure/azure-sdk-for-js

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

- 包体积（解压后）：1.1 MB，440 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.0\.0
- 运行依赖：7 个
- 首次发布：2021-03-03T22:20:08.406Z
- 最新版本发布：2026-07-13T19:11:54.322Z
- 近 30 天下载量：99396483（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：536（近 12 个月 54 个）

## 中文简介

用于在节点.js和浏览器中制作HTTP请求的Isomorphic客户端库.

## 安装

```sh
npm install @azure/core-rest-pipeline
```

也可以使用：`pnpm add @azure/core-rest-pipeline`、`yarn add @azure/core-rest-pipeline`、`bun add @azure/core-rest-pipeline`

## README

# 用于 JavaScript 的 Azure Core HTTP 客户端库

这是Azure SDK JavaScript库的核心HTTP管道,在浏览器和Node.js中工作. 此库主要用于该库生成的代码 [类型Spec](https://typespec.io/) [`@azure-tools/typespec-ts`](https://github.com/Azure/typespec-azure/tree/main/packages/typespec-ts) 发射器.

## 开始

### 所需资源

### 目前得到支持的环境

-   [节点.js的LTS版本](https://github.com/nodejs/release#release-schedule)
-   Safari,Chrome,Edge,和Firefox的最新版本.

看我们的 [支助政策](https://github.com/Azure/azure-sdk-for-js/blob/main/SUPPORT.md) 更多细节.

### 安装

这个软件包主要用于生成的代码中,而无意被终端用户直接消耗.

## 关键概念

### 管道请求

A 类 `PipelineRequest` 描述向 HTTP REST 端点提出请求所需的所有信息.

### 管道响应

A 类 `PipelineResponse` 描述从 REST 端点返回的 HTTP 响应( body, headers, and status code) .

### 发送请求

A 类 `SendRequest` 方法是一种给予 `PipelineRequest` 能够同步返回 a `PipelineResponse`。 。 。 .

```ts
import { PipelineRequest, PipelineResponse } from "@azure/core-rest-pipeline";

type SendRequest = (request: PipelineRequest) => Promise<PipelineResponse>;
```

### Http 客户端

一个 `HttpClient` 是满足以下接口以实施 `SendRequest` 方法 :

```ts
import { SendRequest } from "@azure/core-rest-pipeline";

interface HttpClient {
  /**
   * The method that makes the request and returns a response.
   */
  sendRequest: SendRequest;
}
```

`HttpClient`s 预计将将 HTTP 请求实际变成服务器端点,为此使用一些特定平台的机制.

### 管道政策

A 类 `PipelinePolicy` 是一个执行以下接口的简单对象:

```ts
import { PipelineRequest, SendRequest, PipelineResponse } from "@azure/core-rest-pipeline";

interface PipelinePolicy {
  /**
   * The policy name. Must be a unique string in the pipeline.
   */
  name: string;
  /**
   * The main method to implement that manipulates a request/response.
   * @param request - The request being performed.
   * @param next - The next policy in the pipeline. Must be called to continue the pipeline.
   */
  sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse>;
}
```

它的形状类似于 `HttpClient`,但包含一个政策名称以及略作修改 `SendRequest` 允许它有条件地调用管道中的下一个策略的签名.

人们可以认为政策的作用是: `middleware`,这个概念是NodeJS开发者所熟悉的,他们曾经与框架合作过,例如: [快递](https://expressjs.com/)。 。 。 .

这个 `sendRequest` 执行既可以改变发出的请求,也可以改变收到的回复:

```ts
import { PipelineRequest, SendRequest, PipelineResponse } from "@azure/core-rest-pipeline";

const customPolicy = {
  name: "My wonderful policy",
  async sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse> {
    // Change the outgoing request by adding a new header
    request.headers.set("X-Cool-Header", 42);
    const result = await next(request);
    if (result.status === 403) {
      // Do something special if this policy sees Forbidden
    }
    return result;
  },
};
```

大多数政策只涉及请求或答复,但有一些例外,如: [日志政策](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-rest-pipeline/src/policies/logPolicy.ts) 其中记录了来自每个区域的信息.

### 管道

A 类 `Pipeline` 是管理一组 `PipelinePolicy` 对象。 其主要职能是确保政策以一致和可预测的顺序执行.

您可以想一想政策被像堆放(先入后出)一样应用。 第一个 `PipelinePolicy` 能够修改 `PipelineRequest` 在任何其他政策之前,它也是最后修改 `PipelineResponse`让它最接近呼叫者 最终政策是最后一个能够修改发出请求的,也是第一个处理响应的,使其最接近网络.

A 类 `Pipeline` 满足以下接口:

```ts
import {
  PipelinePolicy,
  AddPipelineOptions,
  PipelinePhase,
  HttpClient,
  PipelineRequest,
  PipelineResponse,
} from "@azure/core-rest-pipeline";

interface Pipeline {
  addPolicy(policy: PipelinePolicy, options?: AddPipelineOptions): void;
  removePolicy(options: { name?: string; phase?: PipelinePhase }): PipelinePolicy[];
  sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise<PipelineResponse>;
  getOrderedPolicies(): PipelinePolicy[];
  clone(): Pipeline;
}
```

正如你所看到的,它允许增加或删除政策,并且松散地与 `HttpClient` 以执行服务器端点的真实请求.

一个重要的概念 `Pipeline`s) 将政策分为顺序阶段:

1.  序列化阶段
2.  未进入阶段的政策
3.  取消序列化阶段
4.  重试阶段

阶段按上述顺序进行,序列化政策首先被应用,再试政策最后被应用. 大多数海关政策都掉入了第二桶,没有获得相位名.

在管道中添加一个政策时,您不仅可以具体说明一个政策处于什么阶段,而且如果它有任何依赖性:

```ts
import { PipelinePhase } from "@azure/core-rest-pipeline";

interface AddPipelineOptions {
  beforePolicies?: string[];
  afterPolicies?: string[];
  afterPhase?: PipelinePhase;
  phase?: PipelinePhase;
}
```

`beforePolicies` 新政策必须执行的政策 `afterPolicies` 新的政策必须随后实施。 同样, `afterPhase` 表示策略必须在指定阶段发生后执行.

这种语法使习惯政策作者能够表达他们自己的政策与由下列机构提供的内在政策之间的任何必要关系: `@azure/core-rest-pipeline` 当创建使用管道时 `createPipelineFromOptions`。 。 。 .

执行者如果希望修改现有政策,也可以按名称或阶段删除政策 `Pipeline` 无需使用 `createEmptyPipeline`编辑 `clone` 方法在重新创建时特别有用 `Pipeline` 不修改原作.

在满足了所有其他限制之后,按增加的顺序实施政策.

## 实例

实例可见于 `samples` 文件夹.

## 今后的步骤

你可以在当地建立和运行测试 通过执行 `npm run test`。探索 `test` 查看高级用途和公开课行为的文件夹.

## 解决问题

如果你在使用图书馆时遇到问题 请随意 [提交问题](https://github.com/Azure/azure-sdk-for-js/issues/new)。 。 。 .

## 捐款

如果您想为图书馆捐钱 请读一下 [贡献指南](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) 学习如何构建和测试密码.

## 常见问题

### @azure/core-rest-pipeline 是什么？

用于在节点\.js和浏览器中制作HTTP请求的Isomorphic客户端库\.

### 如何安装 @azure/core-rest-pipeline？

在项目目录运行 npm install @azure/core-rest-pipeline，或使用 pnpm add / yarn add / bun add。

### @azure/core-rest-pipeline 支持 TypeScript 吗？

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

### @azure/core-rest-pipeline 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @azure/core-rest-pipeline 需要什么版本的 Node\.js？

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

### @azure/core-rest-pipeline 可以商用吗？

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

### @azure/core-rest-pipeline 的下载量有多少？

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

### @azure/core-rest-pipeline 还在维护吗？

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

