@adobe/spacecat-shared-http-utils

中文文档
1.38.0发布于 2026/10/07Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 2548

Spacecat 服务的共享模块 - HTTP Utils

中文使用文档
文档目录15 节
  1. 目录
  2. 导言
  3. 安装
  4. 使用量
  5. API 密码
  6. ok(body?: string): Response
  7. noContent(headers?: Headers): Response
  8. badRequest(message: string, headers?: Headers): Response
  9. notFound(message: string, headers?: Headers): Response
  10. internalServerError(message: string, headers?: Headers): Re…
  11. 认证
  12. FOS/REBAC 类主题
  13. 范围
  14. 捐款
  15. 许可证

空间猫共享 - HTTP 工具

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

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

目录

导言

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

安装

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

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

或者说

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

使用量

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

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下获得许可——参见 自由主义 详细文件.

版本与发布记录

@adobe/spacecat-shared-http-utils 共发布 128 个版本,首次发布于 2023/12/14;过去 12 个月发布了 42 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.38.0latest2026/10/071 个月前
1.37.02026/09/081 个月前
1.36.02026/08/272 个月前
1.35.22026/08/252 个月前
1.35.12026/08/242 个月前
1.35.02026/08/122 个月前

关于 @adobe/spacecat-shared-http-utils 的常见问题

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