# @adobe/spacecat-shared-http-utils 中文文档

规范地址：https://npmcn.com/package/%40adobe/spacecat-shared-http-utils/

版本：1\.38\.0
npm 元数据更新时间：2026-10-07T08:01:38.383Z
中文译文更新时间：2026-11-06T17:46:10.742Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40adobe/spacecat-shared-http-utils
原文对照：https://npmcn.com/package/%40adobe/spacecat-shared-http-utils/?lang=original
项目主页：https://github.com/adobe/spacecat-shared#readme
源码仓库：https://github.com/adobe/spacecat-shared

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

- 包体积（解压后）：242 kB，32 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.0\.0 \<25\.0\.0
- 运行依赖：4 个
- 首次发布：2023-12-14T13:58:22.961Z
- 最新版本发布：2026-10-07T08:01:37.523Z
- 近 30 天下载量：2548（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：128（近 12 个月 42 个）

## 中文简介

Spacecat 服务的共享模块 - HTTP Utils

## 安装

```sh
npm install @adobe/spacecat-shared-http-utils
```

也可以使用：`pnpm add @adobe/spacecat-shared-http-utils`、`yarn add @adobe/spacecat-shared-http-utils`、`bun add @adobe/spacecat-shared-http-utils`

## README

# 空间猫共享 - HTTP 工具

一组用于创建 HTTP 响应的 TypeScript 函数和用于处理的类 认证 HTTP 请求 .

> **页:1**:从HTTP头部添加了痕量ID提取,用于分布式追踪支持.

## 目录

-   [导言](https://npmcn.com/package/%40adobe/spacecat-shared-http-utils/#readme-introduction)
-   [安装](https://npmcn.com/package/%40adobe/spacecat-shared-http-utils/#readme-installation)
-   [使用量](https://npmcn.com/package/%40adobe/spacecat-shared-http-utils/#readme-usage)
-   [API 密码](https://npmcn.com/package/%40adobe/spacecat-shared-http-utils/#readme-api)
-   [捐款](https://npmcn.com/package/%40adobe/spacecat-shared-http-utils/#readme-contributing)
-   [许可证](https://npmcn.com/package/%40adobe/spacecat-shared-http-utils/#readme-license)

## 导言

这个库提供了与http相关的函数集,用于Spacecat开发. 这些功能旨在创建标准化格式的响应,从而更容易在应用程序的不同部分保持一致的结构.

## 安装

使用 npm 或纱线安装软件包 :

```bash
npm install @adobe/spacecat-shared-http-utils
```

或者说

```bash
yarn add @adobe/spacecat-shared-http-utils
```

## 使用量

导入您的 TypeScript 文件中的函数并使用它们生成 HTTP 响应 。 举个例子:

```typescript
import {
  ok,
  noContent,
  badRequest,
  notFound,
  internalServerError,
} from '@adobe/spacecat-shared-http-utils';

// Example usage
const successResponse: Response = ok('Request was successful');

const emptyResponse: Response = noContent();

const errorResponse: Response = badRequest('Invalid input');

const notFoundResponse: Response = notFound('Resource not found');

const serverErrorResponse: Response = internalServerError('Something went wrong');
```

## API 密码

### `ok(body?: string): Response`

以可选机构创建成功的响应.

### `noContent(headers?: Headers): Response`

创建一个没有内容和可选标题的响应.

### `badRequest(message: string, headers?: Headers): Response`

用错误消息和可选标题创建错误请求的响应.

### `notFound(message: string, headers?: Headers): Response`

以错误消息和可选标题创建未找到的情景响应 .

### `internalServerError(message: string, headers?: Headers): Response`

用错误消息和可选标题创建内部服务器错误的响应.

## 认证

此软件包包括处理认证HTTP请求的类.

### FOS/REBAC 类主题

外地资产管制系统辅助的日本电信协会会议, `AuthInfo#getFacsGroups()` 读取 `facs_grps` 要求并返回最多100个已消毒的IMS组标识。 这个 `facsWrapper` 计算作为JWT联盟的有效准入 `facs_permissions`状态 绘图、 org 状态绘图和群态绘图 `facs_access_mappings` (单位:千美元)`subject_type = 'group'`) (中文(简体) ). 赠款只是添加剂.

### 范围

范围化的API密钥在数据层中被定义,可用于认证请求到Spacecat API. 他们雇佣 "镜"可以使精细地获取资源. 一个 API 关键实体的例子看起来是这样的(`id` 删去:

```
{
  "name": "Example API Key",
  "hashedApiKey": "4c806362b613f7496abf284146efd31da90e4b16169fe001841ca17290f427c4",
  "createdAt": "2024-08-21T19:00:00.000Z",
  "expiresAt": "2024-12-21T19:00:00.000Z",
  "scopes": [
    { "name": "imports.write" },
    { "name": "imports.read" }
  ]
}
```

以上要点:

-   `hashedApiKey` 是实际 API 键的 SHA-256 散列( 上面“ test- api- key ”)
-   `scopes` 是授予 API 密钥的权限
-   每个 `scope` 对象可以包含额外数据,但 `name` 需要字段

这个 `ScopedApiKeyHandler` 类用于使用范围化的 API 密钥认证请求。 支持现有的 遗留 API 密钥, 应在 `LegacyApiKeyHandler` 输入 `authHandlers` 阵列。 允许请求 并快速认证现有的 API 密钥,而不需要数据库查询.

#### 检查进入范围

为了实现新的范围,首先提及 `scopeNames` apiKey模型中的数组(/packages/spacecat-shared-data-access/src/models/api-key.js). 如果此处没有列出您所需的范围, 请添加 。 注意范围名称公约是 `resource.action`, (中文(简体) ), 譬如说. `imports.write` 或者说 `sites.read_all`编辑 `_all` 动作后缀表示所创建的资源以外的访问(或 选项)当前 API 键.

接下来,您将想要检查用于提出请求的 API 是否有权限从您的 控制器。 控制器。 这个 `authWrapper` 添加一个 `auth` 帮助上下文 使这一点变得容易。 举个例子 从控制器中检查范围访问 :

```
// This route requires the 'imports.write' scope
function protectedRoute(context) {
  const { auth } = context;
  
  try {
    auth.checkScopes(['imports.write']);
  } catch (error) {
    throw new ErrorWithStatusCode('Missing required scopes', 401);
  }
  
  return ok('You have access to this resource');
}
```

需要 API 密钥实体对象的额外细节吗 ? 这个 `authWrapper` 将认证的 `authInfo` 对象 上下文 `context.attributes.authInfo`,其中API 关键实体可在其 `profile` 属性.

#### 创建新的 API 密钥

目前这是一个人工过程,涉及在数据层中复制一个现有的API关键实体和更新 它的属性。 关于更新的表格,参见 `TABLE_NAME_API_KEYS` 常住的.

今后,我们正计划支持客户申请自己的API密钥的方法,只要有有效的IMS代号.

## 捐款

随意通过打开问题或创建拉出请求来贡献. 请遵循现有的编码样式,并在添加新功能时包含测试内容.

## 许可证

这个项目在Apache 2.0下获得许可——参见 [自由主义](https://npmcn.com/package/%40adobe/spacecat-shared-http-utils/LICENSE) 详细文件.

## 常见问题

### @adobe/spacecat-shared-http-utils 是什么？

Spacecat 服务的共享模块 - HTTP Utils

### 如何安装 @adobe/spacecat-shared-http-utils？

在项目目录运行 npm install @adobe/spacecat-shared-http-utils，或使用 pnpm add / yarn add / bun add。

### @adobe/spacecat-shared-http-utils 支持 TypeScript 吗？

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

### @adobe/spacecat-shared-http-utils 支持 ESM 还是 CommonJS？

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

### @adobe/spacecat-shared-http-utils 需要什么版本的 Node\.js？

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

### @adobe/spacecat-shared-http-utils 可以商用吗？

@adobe/spacecat-shared-http-utils 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @adobe/spacecat-shared-http-utils 的下载量有多少？

根据 npm 官方下载统计，@adobe/spacecat-shared-http-utils 在 2026/10/05 – 2026/11/03 这 30 天内被下载 2,548 次，日均约 85 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @adobe/spacecat-shared-http-utils 还在维护吗？

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

