@aws-sdk/middleware-stack

中文文档
3.374.0发布于 2023/07/21Apache-2.0TypeScriptESM + CJS近 30 天下载 692.1万

Provides a means for composing multiple middleware functions into a single handler

此软件包已被标记为弃用

This package has moved to @smithy/middleware-stack

原始使用文档
文档目录4 节
  1. Adding Middleware
  2. Absolute Location
  3. Relative Location
  4. Removing Middleware

@aws-sdk/middleware-stack

NPM version NPM downloads

The package contains an implementation of middleware stack interface. Middleware stack is a structure storing middleware in specified order and resolve these middleware into a single handler.

A middleware stack has five Steps, each of them represents a specific request life cycle:

  • initialize: The input is being prepared. Examples of typical initialization tasks include injecting default options computing derived parameters.

  • serialize: The input is complete and ready to be serialized. Examples of typical serialization tasks include input validation and building an HTTP request from user input.

  • build: The input has been serialized into an HTTP request, but that request may require further modification. Any request alterations will be applied to all retries. Examples of typical build tasks include injecting HTTP headers that describe a stable aspect of the request, such as Content-Length or a body checksum.

  • finalizeRequest: The request is being prepared to be sent over the wire. The request in this stage should already be semantically complete and should therefore only be altered to match the recipient's expectations. Examples of typical finalization tasks include request signing and injecting hop-by-hop headers.

  • deserialize: The response has arrived, the middleware here will deserialize the raw response object to structured response

Adding Middleware

There are two ways to add middleware to a middleware stack. They both add middleware to specified Step but they provide fine-grained location control differently.

Absolute Location

You can add middleware to specified step with:

stack.add(middleware, {
  step: "finalizeRequest",
});

This approach works for most cases. Sometimes you want your middleware to be executed in the front of the Step, you can set the Priority to high. Set the Priority to low then this middleware will be executed at the end of Step:

stack.add(middleware, {
  step: "finalizeRequest",
  priority: "high",
});

If multiple middleware is added to same step with same priority, the order of them is determined by the order of adding them.

Relative Location

In some cases, you might want to execute your middleware before some other known middleware, then you can use addRelativeTo():

stack.add(middleware, {
  step: "finalizeRequest",
  name: "myMiddleware",
});
stack.addRelativeTo(anotherMiddleware, {
  relation: "before", //or 'after'
  toMiddleware: "myMiddleware",
});

Removing Middleware

You can remove middleware by name one at a time:

stack.remove("Middleware1");

If you specify tags for middleware, you can remove multiple middleware at a time according to tag:

stack.add(middleware, {
  step: "finalizeRequest",
  tags: ["final"],
});
stack.removeByTag("final");

版本与发布记录

@aws-sdk/middleware-stack 共发布 120 个版本,首次发布于 2018/11/20;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.374.0latest2023/07/213 年前
3.370.02023/07/143 年前
3.369.02023/07/113 年前
3.357.02023/06/223 年前
3.347.02023/06/073 年前
3.342.02023/05/313 年前

其他发布通道:preview → 0.1.0-preview.9,alpha → 1.0.0-alpha.6,beta → 1.0.0-beta.4,gamma → 1.0.0-gamma.8,rc → 1.0.0-rc.10。

关于 @aws-sdk/middleware-stack 的常见问题

@aws-sdk/middleware-stack 是什么?

Provides a means for composing multiple middleware functions into a single handler注意:该包已被作者标记为弃用——This package has moved to @smithy/middleware-stack

如何安装 @aws-sdk/middleware-stack?

在项目目录运行 npm install @aws-sdk/middleware-stack,或使用 pnpm add / yarn add / bun add。

@aws-sdk/middleware-stack 支持 TypeScript 吗?

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

@aws-sdk/middleware-stack 支持 ESM 还是 CommonJS?

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

@aws-sdk/middleware-stack 需要什么版本的 Node.js?

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

@aws-sdk/middleware-stack 可以商用吗?

@aws-sdk/middleware-stack 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aws-sdk/middleware-stack 的下载量有多少?

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

@aws-sdk/middleware-stack 还在维护吗?

最新版本 3.374.0 发布于 2023/07/21(3 年前);至今共发布 120 个版本,其中过去 12 个月发布了 0 个;首次发布于 2018/11/20。作者已将其标记为弃用,新项目建议寻找替代方案。