@aptos-labs/aptos-客户端
Aptos 网络 API 的 HTTP 客户端. 单独工作或作为运输层 Aptos 类型脚本 SDK。 。 。 .
特征
- HTTP/2 导弹 ——默认在所有平台启用
- 多运行时间 — Node.js, Deno, Bun, 浏览器, 以及 React Introduct
- 饼干罐 在节点、德诺和邦自动处理饼干
- 业连支助 —— 说
bcsRequest()返回原始内容ArrayBuffer二进制编码回复
安装
npm install @aptos-labs/aptos-client
# or
pnpm add @aptos-labs/aptos-client
使用量
import aptosClient from "@aptos-labs/aptos-client";
const { status, data } = await aptosClient<{ chain_id: number }>({
url: "https://fullnode.mainnet.aptoslabs.com/v1",
method: "GET",
});
已命名的出口
import { jsonRequest, bcsRequest } from "@aptos-labs/aptos-client";
// JSON (same as default export)
const json = await jsonRequest<MyType>({ url, method: "GET" });
// BCS (returns ArrayBuffer)
const bcs = await bcsRequest({ url, method: "GET" });
运行时间解析
软件包使用 有条件出口 为每次运行时间选择正确的执行 :
| 条件 | 入境点 | HTTP/2 导弹 | 页:1 |
|---|---|---|---|
node | index.node.ts | 可配置通过 http2 选项(默认) true(中文(简体) ) | 用途 已经 (代码) br编号 :gzip编号 :deflate h1和H2透明 |
browser | index.browser.ts | 自动( 浏览器引擎) | 向浏览器代表 cookie |
react-native | index.fetch.ts | 自动( OkHttp / NSURL 会话) | 平台通过 ALPN 谈判 HTTP/2 |
deno | index.fetch.ts | 自动 | —— 说 |
bun | index.fetch.ts | 自动 | —— 说 |
workerd | index.fetch.ts | 自动 | 云花岗工人 |
edge-light | index.fetch.ts | 自动 | Vercel边缘函数 |
default | index.fetch.ts | 取决于运行时间 | 未知运行时间的倒计时 |
类型
type AptosClientRequest = {
url: string;
method: "GET" | "POST";
body?: unknown;
params?: Record<string, string | number | bigint | boolean | undefined>;
headers?: Record<string, string | undefined>;
overrides?: { WITH_CREDENTIALS?: boolean };
http2?: boolean; // Node only — ignored elsewhere
cookieJar?: CookieJarLike; // Per-request cookie isolation (Node & fetch only)
};
type AptosClientResponse<Res> = {
status: number;
statusText: string;
data: Res;
config?: any;
request?: any;
response?: any;
headers?: Record<string, string | string[]>;
};
见
src/types.ts用于带有文档的完整类型定义.
HTTP/2 导弹
| 运行时间 | 如何运作 |
|---|---|
| 节点.js | got 通过ALPN(由 http2-wrapper当 http2: true (默认). 设定 http2: false 以强制使用 HTTP/1.1. |
| 浏览器 | 浏览器引擎与服务器自动谈判HTTP/2. 这个 http2 选项被忽略. |
| 原生反应 | OkHttp(Android)和NSURL Session(iOS)通过ALPN自动谈判HTTP/2. 这个 http2 选项被忽略. |
| 德诺/ 邦 | 运行时间自动谈判HTTP/2. 这个 http2 选项被忽略. |
从v2 移动
v4.1.0 返回相同的 HTTP 库 v2 (got),同时保留v4架构(ESM,有条件的出口,多运行时间). 对于大多数呼叫者来说,迁移是一两个小编辑.
如果你在v3.0.0到v4.0.0,升级. 这些版本静悄悄地返回原始压缩字节,而不是当来源发送时解析 JSON
content-encoding: br编号 :gzip编号 :deflate——这是Aptos fullnode和索引器的工作. 4.1.0 恢复v2-era减压行为.
和v2一样有效
http2: true默认; 当服务器不支持 H2 时倒回 H1.1 .- Brotli / gzip / deflate 解压处理透明.
- 饼干罐子回转
set-cookie并且根据同源请求重新发送饼干. bigint查询参数为字符串.- 4xx / 5xx 答复有 没有 投掷-检查
res.status。 。 。 . AptosClientResponse形状 :{ status, statusText, data, config, request, response, headers }与headers作为一个平地Record<string, string | string[]>。 。 。 .
行为改变( 呼叫者可观察)
| 变动 | 页:1 | 页:1 |
|---|---|---|
| BCS 响应类型 | Buffer | ArrayBuffer - 交叉运行时间,不 Buffer 需要多填充剂。 字节相同; 使用 new Uint8Array(res.data) 或者说 Buffer.from(res.data) 如果你需要任何形状. |
| 检索 | 获得默认( e)limit: 2, 备份) | 关闭 (单位:千美元)limit: 0) (中文(简体) ). 在您自己的重试回环中环绕, 或者让 Aptos TS SDK 在更高层管理重试 . |
| 非JSON机构 | JSON.parse 会抛出 | 返回原始文本输入 data ——让呼叫者检查状态代码,无论身体内容类型如何. |
| 空 / 204/ 205具尸体 | 不论得到什么回报(往往) "" 或者说 undefined(中文(简体) ) | 明确 null。 。 。 . |
statusText 超过 HTTP/2 | 空字符串( H2 没有理由短语) | 倒计时 http.STATUS_CODES[code] —— 说 "OK", (中文(简体) ), "Not Found"等 (中文(简体) ). |
NODE_TLS_REJECT_UNAUTHORIZED=0 关于H2 | 过渡性继承(意外工作) | 明确传播到获得 https.rejectUnauthorized ——同时在H1和H2上工作. |
V2以来的新能力
- 按要求的饼干罐隔离 - 通过
cookieJar: new CookieJar()以保留共享饼干状态的多租户请求. - 公开
CookieJar现在出口(有RFC 6265验证、过期驱逐、人均原产地盖和SameSite=None+Secure执行). CookieJarLike接口 ——自带罐子(如:硬饼干或数据库后置商店等).- 有条件出口 自动选择 Node / 浏览器 / Deno / Bun / Cloudflare Workers / Vercel Edge / React Introduct. v2 仅运出 Node + 浏览器的右条目.
overrides.WITH_CREDENTIALS(浏览器条目)地图到fetch是因为credentials: "omit" | "include"。 。 。 .
自 v2 起删除
- 司法理事会
require()——自v 4.0起,该包只采用无害环境管理. 使用import或者说await import(...)。 。 。 . - 获取错误类型的再导出 - 如果你处理
RequestError编号 :HTTPError直接导入got(仍然是直接依赖). - 节点 < 22 ——最低支持的节点版本为22.
移徙清单
- 使用
require()? 吗? 切换到import(或await import()从CJS). - 通话
Buffer关于BCS响应的方法? • 使用new Uint8Array(res.data), (中文(简体) ),new DataView(res.data),或用Buffer.from(res.data)。 。 。 . - 依靠自动回击? + 添加一个明确的重试包装。 (大多数消费者——包括Aptos TS SDK——不需要. )
- 节点版本 < 22? • 升级.
这就是完整的迁移。 其它东西要么是相同的,要么是添加剂,要么是固定的虫子.
发布新版本
当创建了 GitHub 发布时, 发布会自动通过 GitHub Actions 发布到 npm 。 工作流程存在于 .github/workflows/publish.yml。 。 。 .
要发布新版本 :
-
更新版本 内
package.json(以下为) 铸造:npm version <major|minor|patch> --no-git-tag-version -
更新
CHANGELOG.md- 将任何注释移到下面# Unreleased输入一个新版,用于发布版本. -
提交和推 版本凸起和更改日志更新到
main数字 :git add package.json CHANGELOG.md git commit -m "v<VERSION>" git push -
创建 GitHub 发布 带有匹配的标签
vMAJOR.MINOR.PATCH(例如:.v2.3.0) (中文(简体) ). 标签 必须 匹配当前版本package.json——发布工作流程否则会失败. 释放前标签v2.3.0-beta.1也得到支持.
然后发布工作流程会自动:
- 验证标签是否匹配预期
vMAJOR.MINOR.PATCH[-prerelease]模式. - 验证标签是否匹配
version输入package.json。 。 。 . - 安装依赖关系、构建软件包并发布到 npm 来源。 。 。 .