@azure/core-rest-pipeline

中文文档
1.25.0发布于 2026/07/14MITTypeScriptESM + CJS近 30 天下载 9939.6万

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

中文使用文档
文档目录15 节
  1. 开始
  2. 所需资源
  3. 目前得到支持的环境
  4. 安装
  5. 关键概念
  6. 管道请求
  7. 管道响应
  8. 发送请求
  9. Http 客户端
  10. 管道政策
  11. 管道
  12. 实例
  13. 今后的步骤
  14. 解决问题
  15. 捐款

用于 JavaScript 的 Azure Core HTTP 客户端库

这是Azure SDK JavaScript库的核心HTTP管道,在浏览器和Node.js中工作. 此库主要用于该库生成的代码 类型Spec @azure-tools/typespec-ts 发射器.

开始

所需资源

目前得到支持的环境

看我们的 支助政策 更多细节.

安装

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

关键概念

管道请求

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

管道响应

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

发送请求

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

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

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

Http 客户端

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

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

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

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

管道政策

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

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开发者所熟悉的,他们曾经与框架合作过,例如: 快递。 。 。 .

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

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;
  },
};

大多数政策只涉及请求或答复,但有一些例外,如: 日志政策 其中记录了来自每个区域的信息.

管道

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

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

A 类 Pipeline 满足以下接口:

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 以执行服务器端点的真实请求.

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

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

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

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

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 查看高级用途和公开课行为的文件夹.

解决问题

如果你在使用图书馆时遇到问题 请随意 提交问题。 。 。 .

捐款

如果您想为图书馆捐钱 请读一下 贡献指南 学习如何构建和测试密码.

版本与发布记录

@azure/core-rest-pipeline 共发布 536 个版本,首次发布于 2021/03/04;过去 12 个月发布了 54 个版本。

版本发布日期距今
1.25.0latest2026/07/143 个月前
1.24.02026/06/065 个月前
1.23.1-alpha.20260311.2dev2026/03/127 个月前
1.23.1-alpha.20260309.32026/03/107 个月前
1.23.1-alpha.20260306.42026/03/078 个月前
1.23.02026/03/068 个月前

关于 @azure/core-rest-pipeline 的常见问题

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