SDK 安装
SDK可以安装其中之一 无, (中文(简体) ), 小时, (中文(简体) ), 包头 或者说 线条 软件包管理器.
国家预防机制
npm add @avalabs/avacloud-sdk
菲律宾
pnpm add @avalabs/avacloud-sdk
阿宝
bun add @avalabs/avacloud-sdk
雅伦
yarn add @avalabs/avacloud-sdk zod
# Note that Yarn does not install peer dependencies automatically. You will need
# to install zod as shown above.
模式背景协议( MCP) 服务器
这个SDK也是可安装的MCP服务器,各种SDK方法都在这里 被曝光为AI应用程序可以引用的工具.
从 npm 运行 MCP 服务器需要node.js v20 或更多.
Claude 安装步骤
在您的服务器中添加以下定义 claude_desktop_config.json 文件 :
{
"mcpServers": {
"AvaCloudSDK": {
"command": "npx",
"args": [
"-y", "--package", "@avalabs/avacloud-sdk",
"--",
"mcp", "start",
"--server-url", "...",
"--api-key", "...",
"--chain-id", "...",
"--network", "..."
]
}
}
}
光标安装步骤
创建一个 .cursor/mcp.json 在工程根中包含以下内容的文件 :
{
"mcpServers": {
"AvaCloudSDK": {
"command": "npx",
"args": [
"-y", "--package", "@avalabs/avacloud-sdk",
"--",
"mcp", "start",
"--server-url", "...",
"--api-key", "...",
"--chain-id", "...",
"--network", "..."
]
}
}
}
也可以作为独立的二进制运行MCP服务器,没有额外的依赖性. 你必须从现有的 Github 释放中提取这些二进制:
curl -L -o mcp-server \
https://github.com/{org}/{repo}/releases/download/{tag}/mcp-server-bun-darwin-arm64 && \
chmod +x mcp-server
如果回购是私人回购, 您必须加入您的 Github PAT 才能下载发行 -H "Authorization: Bearer {GITHUB_PAT}"。 。 。 .
{
"mcpServers": {
"Todos": {
"command": "./DOWNLOAD/PATH/mcp-server",
"args": [
"start"
]
}
}
}
服务器参数完整列表中, 运行 :
npx -y --package @avalabs/avacloud-sdk -- mcp start --help
所需资源
对于支持的 JavaScript 运行时间, 请参考 运行时间.md。 。 。 .
SDK 示例使用法
示例
import { AvaCloudSDK } from "@avalabs/avacloud-sdk";
const avaCloudSDK = new AvaCloudSDK({
serverURL: "https://api.example.com",
});
async function run() {
await avaCloudSDK.sendAddressActivityWebhook({
webhookId: "401da7d9-d6d7-46c8-b431-72ff1e1543f4",
eventType: "address_activity",
messageId: "bc9732db-2430-4296-afc3-c51267beb14a",
event: {
transaction: {
blockHash:
"0x2a47bebed93db4a21cc8339980f004cc67f17d0dff4a368001e450e7be2edaa0",
blockNumber: "45396106",
from: "0x737F6b0b8A04e8462d0fC7076451298F0dA9a972",
gas: "80000",
gasPrice: "52000000000",
maxFeePerGas: "52000000000",
maxPriorityFeePerGas: "2000000000",
txHash:
"0xfd91150d236ec5c3b1ee325781affad5b0b4d7eb0187c84c220ab115eaa563e8",
txStatus: "1",
input:
"0xa9059cbb00000000000000000000000040e832c3df9562dfae5a86a4849f27f687a9b46b00000000000000000000000000000000000000000000000000000000c68b2a69",
nonce: "0",
to: "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7",
transactionIndex: 1,
value: "0",
type: 2,
chainId: "43114",
receiptCumulativeGasUsed: "668508",
receiptGasUsed: "44038",
receiptEffectiveGasPrice: "27000000000",
receiptRoot:
"0xe5b018c29a77c8a92c4ea2f2d7e58820283041a52e14a0620d90d13b881e1ee3",
blockTimestamp: 1715621840,
contractAddress: "0x0000000000000000000000000000000000000000",
erc20Transfers: [
{
transactionHash:
"0xfd91150d236ec5c3b1ee325781affad5b0b4d7eb0187c84c220ab115eaa563e8",
type: "ERC20",
from: "0x737F6b0b8A04e8462d0fC7076451298F0dA9a972",
to: "0x40E832C3Df9562DfaE5A86A4849F27F687A9B46B",
value: "3331009129",
tokenId: "2",
blockTimestamp: 1640995200,
logIndex: 5,
erc20Token: {
address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
name: "TetherToken",
symbol: "USDt",
decimals: 6,
valueWithDecimals: "3331.009129",
},
erc721Token: {
address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
name: "TetherToken",
symbol: "USDt",
decimals: 6,
valueWithDecimals: "3331.009129",
},
erc1155Token: {
address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
name: "TetherToken",
symbol: "USDt",
decimals: 6,
valueWithDecimals: "3331.009129",
},
},
{
transactionHash:
"0xfd91150d236ec5c3b1ee325781affad5b0b4d7eb0187c84c220ab115eaa563e8",
type: "ERC20",
from: "0x737F6b0b8A04e8462d0fC7076451298F0dA9a972",
to: "0x40E832C3Df9562DfaE5A86A4849F27F687A9B46B",
value: "3331009129",
tokenId: "2",
blockTimestamp: 1640995200,
logIndex: 5,
erc20Token: {
address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
name: "TetherToken",
symbol: "USDt",
decimals: 6,
valueWithDecimals: "3331.009129",
},
erc721Token: {
address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
name: "TetherToken",
symbol: "USDt",
decimals: 6,
valueWithDecimals: "3331.009129",
},
erc1155Token: {
address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
name: "TetherToken",
symbol: "USDt",
decimals: 6,
valueWithDecimals: "3331.009129",
},
},
],
erc721Transfers: [],
erc1155Transfers: [],
internalTransactions: [
{
from: "0x737F6b0b8A04e8462d0fC7076451298F0dA9a972",
to: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
internalTxType: "call",
value: "50000000000000000",
gasUsed: "44038",
gasLimit: "50000",
transactionHash:
"0xfd91150d236ec5c3b1ee325781affad5b0b4d7eb0187c84c220ab115eaa563e8",
},
{
from: "0x737F6b0b8A04e8462d0fC7076451298F0dA9a972",
to: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
internalTxType: "call",
value: "50000000000000000",
gasUsed: "44038",
gasLimit: "50000",
transactionHash:
"0xfd91150d236ec5c3b1ee325781affad5b0b4d7eb0187c84c220ab115eaa563e8",
},
{
from: "0x737F6b0b8A04e8462d0fC7076451298F0dA9a972",
to: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
internalTxType: "call",
value: "50000000000000000",
gasUsed: "44038",
gasLimit: "50000",
transactionHash:
"0xfd91150d236ec5c3b1ee325781affad5b0b4d7eb0187c84c220ab115eaa563e8",
},
],
accessList: [
{
accessAddresses: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
storageKeys: [
"<value 1>",
"<value 2>",
],
},
{
accessAddresses: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
storageKeys: [
"<value 1>",
"<value 2>",
],
},
{
accessAddresses: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
storageKeys: [
"<value 1>",
"<value 2>",
],
},
],
networkToken: {
tokenName: "TetherToken",
tokenSymbol: "USDt",
tokenDecimals: 6,
valueWithDecimals: "3331.009129",
},
},
logs: [
{
address: "0x54C800d2331E10467143911aabCa092d68bF4166",
topic0:
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
topic1:
"0x0000000000000000000000000000333883f313ad709f583d0a3d2e18a44ef29b",
topic2:
"0x0000000000000000000000000000000000000000000000000000000000000000",
topic3:
"0x0000000000000000000000000000000000000000000000000000000000001350",
data: "0x",
transactionIndex: 2,
logIndex: 10,
removed: false,
},
{
address: "0x54C800d2331E10467143911aabCa092d68bF4166",
topic0:
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
topic1:
"0x0000000000000000000000000000333883f313ad709f583d0a3d2e18a44ef29b",
topic2:
"0x0000000000000000000000000000000000000000000000000000000000000000",
topic3:
"0x0000000000000000000000000000000000000000000000000000000000001350",
data: "0x",
transactionIndex: 2,
logIndex: 10,
removed: false,
},
{
address: "0x54C800d2331E10467143911aabCa092d68bF4166",
topic0:
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
topic1:
"0x0000000000000000000000000000333883f313ad709f583d0a3d2e18a44ef29b",
topic2:
"0x0000000000000000000000000000000000000000000000000000000000000000",
topic3:
"0x0000000000000000000000000000000000000000000000000000000000001350",
data: "0x",
transactionIndex: 2,
logIndex: 10,
removed: false,
},
],
},
});
}
run();
现有资源和业务
可用方法
数据
- 健康检查 - 获得服务的健康
数据.evm.地址.余额
- 获取 - 获得本地代币平衡
- 列表 ERC20 - 列出ERC-20余额
- 列表 ERC721 - ERC-721余额清单
- 列表 ERC1155 - 列出ERC-1155余额
- 列表 - 清单可收集(ERC-721/ERC-1155)余额
数据.evm.地址.链
- 列表 - 列出与特定地址有关的所有链条
合同
- 列表 调动 - 已部署的合同清单
数据.evm.address.org. 交易
- 列表 - 清单交易
- 列表 - 列出本土交易
- 列表 ERC20 - ERC-20转让清单
- 列表 ERC721 - ERC-721转让清单
- 列表 ERC1155 - ERC-1155转让清单
- 列表内部 - 内部交易清单
数据.evm.块
- 列表 LATES 全部目录 - 列出所有支持的EVM链的最新块
- 列表末端 - 列出最新的块
- 起来 - 挡住
- 列表 交易 - 列出块的交易
数据.evm.链
⚠️ 这次行动将在未来发布中被移除. 请使用/v1/address/:address/chains 结尾 :警告: 折旧
列表 AllLast 交易- 说吧 [过期] 列出所有支持的 EVM 链的最新交易。 可按状态过滤 .
⚠️ 这次行动将在未来发布中被移除. 请使用 /v1/ 交易端点代替 :警告: 折旧
列表 AllLatest 块- 说吧 [过期] 列出所有支持的 EVM 链条的最新块 。 可通过网络过滤.
⚠️ 这次行动将在未来发布中被移除. 请使用/v1/blocks 结尾 :警告: 折旧
合同
数据.evm. 交易
- 列表 LATES 全部目录 - 列出所有支持的EVM链的最新交易
- 起来 - 获取交易
- 列表末端 - 列出最新交易
数据.icm
数据.nfts
数据
数据
- 获取资产集细节 - 获取资产细节
- 获取 ChanIds 地址 - 获取地址的链式互动
- 获取网络细节 - 获取网络细节
- 列表链 - 列出区块链
- 获取锁链ById - 通过身份识别获取区块链细节
- 列表子网 - 列表子网
- 获取SubnetById - 通过身份证获取子网细节
- 参数 - 列表验证符
- 获取参数 - 获得单一验证器的细节
- 代表名单 - 名单授权人
- 列表L1 参数 - 列出 L1 验证符
数据
- 列表标题 - 获得平衡
数据. primeNetwork.blocks
数据. primaryNetwork.rewards (原始内容存档于2018-09-21)
数据。主网络。交易
数据. primeNetwork.utxos
- 列表标题 - 列出UTXOs
数据. primeNetwork.verties (原始内容存档于2018-09-29)
数据
数据. teleporter
获取电子邮件- 说吧 [过期] 以信件 ID 方式获取传送消息 .
⚠️ 这次行动将在未来发布中被移除. 请使用 /v1/ icm/ messages/: messageId 端点代替 :警告: 折旧
电子邮件- 说吧 [过期] 列出传送者信件 。 按降序按时间戳顺序排列.
⚠️ 这次行动将在未来发布中被移除. 请使用 /v1/ icm/ message 端点代替 :警告: 折旧
电子邮件地址- 说吧 [过期] 通过地址列出传送者信件 。 按降序按时间戳顺序排列.
⚠️ 这次行动将在未来发布中被移除. 请使用/v1/icm/addresses/:address/messages 端点代替 :警告: 折旧
数据.usage Metrics
- 获取用户 - 为数据API获取使用指标
- 获取日志 - 获得客户请求的记录
- 获取子网RpcUsage - 获得子网RPC的使用指标
获取 RpcUsage 度量衡- 说吧 [过期] 获得公共Subnet RPC在指定时间间隔内使用的度量衡,这些度量衡在指定时间期限颗粒上汇总.
⚠️ 这次行动将在未来发布中被移除. 请使用 /v1/ subnetRpcUsageMetrics 结尾代替:警告: 折旧
图像
- 复合查询 - 综合查询
计量
- 健康检查 - 获得服务的健康
参数链
- 列表 - 获得支持的区块链列表
- 起来 - 获取支持区块链的链条信息
- 获取计量 - 获得EVM链的衡量标准
- 获取传送器计量 - 获得EVM链的远程传送器计量标准
- 获取 Rolling Window 度量衡 - 获得EVM链的滚动窗口计量标准
- 列表NftHolders 服务器 - 通过合同地址获取NFT持有人
- 列表 TokenHolders Above 危险值 - 随时间推移按平衡得到地址
- 列表BTCb Bridgers Above 危险值 -通过BTCb桥接平衡获得地址
1.1 参数
- 列表计量 - 为所有验证员提供衡量标准
- 获得计量比参数Id - 以给定的验证id和时间戳范围获得计量值
- 获得度量衡ByNodeId - 以给定的节点标识和时间戳范围获取公分值
- 获得量子BySubnetId - 以给定的子网ID和时间戳范围获取度量值
指标.网络
- 获取抓取 计量 - 为给定的子网获得衡量标准
度量衡。 子网络
- 获取变量 - 在特定时间范围内获取正在运行的地址验证器
网络用户
- 列表 - 列出网络呼号
- 创建 - 创建一个网页
- 起来 - 找个身份证明
- 关闭 - 取消一个网页
- 更新 - 更新一个网签
- 生成 OrRotate 共享密钥 - 生成或旋转共享的秘密
- 获取共享密钥 - 找个共同的秘密
网络用户。 地址
独立职能
上述所有方法都作为独立功能提供。 这些 函数是用于在浏览器中运行的应用程序的理想功能,没有服务器 运行时间或应用程序捆绑大小为主的其他环境 关心。 当使用捆绑器构建您的应用程序时, 全部未使用 功能将被从最后的捆绑中排除,或者被树切除.
要了解更多独立函数, 请检查 职能.md。 。 。 .
现有的独立职能
dataEvmAddressBalancesGetNative- 获得本地代币平衡dataEvmAddressBalancesListCollectibles- 清单可收集(ERC-721/ERC-1155)余额dataEvmAddressBalancesListErc1155- 列出ERC-1155余额dataEvmAddressBalancesListErc20- 列出ERC-20余额dataEvmAddressBalancesListErc721- ERC-721余额清单dataEvmAddressChainsList- 列出与特定地址有关的所有链条dataEvmAddressContractsListDeployments- 已部署的合同清单dataEvmAddressTransactionsList- 清单交易dataEvmAddressTransactionsListErc1155- ERC-1155转让清单dataEvmAddressTransactionsListErc20- ERC-20转让清单dataEvmAddressTransactionsListErc721- ERC-721转让清单dataEvmAddressTransactionsListInternal- 内部交易清单dataEvmAddressTransactionsListNative- 列出本土交易dataEvmBlocksGet- 挡住dataEvmBlocksListLatest- 列出最新的块dataEvmBlocksListLatestAllChains- 列出所有支持的EVM链的最新块dataEvmBlocksListTransactions- 列出块的交易dataEvmChainsGet- 获取链条信息dataEvmChainsList- 名单链dataEvmContractsGetDeploymentTransaction- 得到部署交易dataEvmContractsGetMetadata- 获取合同元数据dataEvmContractsListTransfers- ERC转让清单dataEvmTransactionsGet- 获取交易dataEvmTransactionsListLatest- 列出最新交易dataEvmTransactionsListLatestAllChains- 列出所有支持的EVM链的最新交易dataHealthCheck- 获得服务的健康dataIcmGet- 获取ICM消息dataIcmList- 列出 ICM 信件dataIcmListByAddress- 按地址列出 ICM 信件dataNftsGet- 获取标记细节dataNftsList- 列表符号dataNftsReindex- 重新索引NFT元数据dataOperationsExportTransactions- 创建交易导出操作dataOperationsGetResult- 行动dataPrimaryNetworkBalancesListByAddresses- 获得平衡dataPrimaryNetworkBlocksGet- 挡住dataPrimaryNetworkBlocksListByNodeId- 节点提出的列表块dataPrimaryNetworkBlocksListLatest- 列出最新的块dataPrimaryNetworkGetAssetDetails- 获取资产细节dataPrimaryNetworkGetBlockchainById- 通过身份识别获取区块链细节dataPrimaryNetworkGetChainIdsForAddresses- 获取地址的链式互动dataPrimaryNetworkGetNetworkDetails- 获取网络细节dataPrimaryNetworkGetSubnetById- 通过身份证获取子网细节dataPrimaryNetworkGetValidatorDetails- 获得单一验证器的细节dataPrimaryNetworkListBlockchains- 列出区块链dataPrimaryNetworkListDelegators- 名单授权人dataPrimaryNetworkListL1Validators- 列出 L1 验证符dataPrimaryNetworkListSubnets- 列表子网dataPrimaryNetworkListValidators- 列表验证符dataPrimaryNetworkRewardsListHistoricalRewards- 列出历史奖励dataPrimaryNetworkRewardsListPendingRewards- 列出待决奖励dataPrimaryNetworkTransactionsGet- 获取交易dataPrimaryNetworkTransactionsListActiveStakingTransactions- 清单交易dataPrimaryNetworkTransactionsListAssetTransactions- 清单资产交易dataPrimaryNetworkTransactionsListLatest- 列出最新交易dataPrimaryNetworkUtxosListByAddresses- 列出UTXOsdataPrimaryNetworkVerticesGetByHash- 获取顶点dataPrimaryNetworkVerticesListByHeight- 按高度列出顶点dataPrimaryNetworkVerticesListLatest- 列出顶点dataSignatureAggregatorAggregate- 签名总数dataSignatureAggregatorGet- 获得汇总签名dataUsageMetricsGetLogs- 获得客户请求的记录dataUsageMetricsGetSubnetRpcUsage- 获得子网RPC的使用指标dataUsageMetricsGetUsage- 为数据API获取使用指标lookingGlassCompositeQuery- 综合查询metricsChainsGet- 获取支持区块链的链条信息metricsChainsGetMetrics- 获得EVM链的衡量标准metricsChainsGetRollingWindowMetrics- 获得EVM链的滚动窗口计量标准metricsChainsGetTeleporterMetrics- 获得EVM链的远程传送器计量标准metricsChainsList- 获得支持的区块链列表metricsChainsListBTCbBridgersAboveThreshold-通过BTCb桥接平衡获得地址metricsChainsListNftHolders- 通过合同地址获取NFT持有人metricsChainsListTokenHoldersAboveThreshold- 随时间推移按平衡得到地址metricsHealthCheck- 获得服务的健康metricsL1ValidatorsGetMetricsByNodeId- 以给定的节点标识和时间戳范围获取公分值metricsL1ValidatorsGetMetricsBySubnetId- 以给定的子网ID和时间戳范围获取度量值metricsL1ValidatorsGetMetricsByValidationId- 以给定的验证id和时间戳范围获得计量值metricsL1ValidatorsListMetrics- 为所有验证员提供衡量标准metricsNetworksGetStakingMetrics- 为给定的子网获得衡量标准metricsSubnetsGetValidators- 在特定时间范围内获取正在运行的地址验证器webhooksAddressesAdd- 在 EVM 活动 Webhook 中添加地址webhooksAddressesList- 列出EVM活动的外衣网游webhooksAddressesRemove- 从 EVM 活动中删除地址webhookwebhooksCreate- 创建一个网页webhooksDeactivate- 取消一个网页webhooksGenerateOrRotateSharedSecret- 生成或旋转共享的秘密webhooksGet- 找个身份证明webhooksGetSharedSecret- 找个共同的秘密webhooksList- 列出网络呼号webhooksUpdate- 更新一个网签- 说吧 [过期] 获取交易或ERC传输中地址为发送者或接收者的所有链条列表 。 名单目前每15分钟更新一次.dataEvmChainsGetAddressChains
⚠️ 这次行动将在未来发布中被移除. 请使用/v1/address/:address/chains 结尾 :警告: 折旧
- 说吧 [过期] 列出所有支持的 EVM 链条的最新块 。 可通过网络过滤.dataEvmChainsListAllLatestBlocks
⚠️ 这次行动将在未来发布中被移除. 请使用/v1/blocks 结尾 :警告: 折旧
- 说吧 [过期] 列出所有支持的 EVM 链的最新交易。 可按状态过滤 .dataEvmChainsListAllLatestTransactions
⚠️ 这次行动将在未来发布中被移除. 请使用 /v1/ 交易端点代替 :警告: 折旧
- 说吧 [过期] 以信件 ID 方式获取传送消息 .dataTeleporterGetTeleporterMessage
⚠️ 这次行动将在未来发布中被移除. 请使用 /v1/ icm/ messages/: messageId 端点代替 :警告: 折旧
- 说吧 [过期] 列出传送者信件 。 按降序按时间戳顺序排列.dataTeleporterListTeleporterMessages
⚠️ 这次行动将在未来发布中被移除. 请使用 /v1/ icm/ message 端点代替 :警告: 折旧
- 说吧 [过期] 通过地址列出传送者信件 。 按降序按时间戳顺序排列.dataTeleporterListTeleporterMessagesByAddress
⚠️ 这次行动将在未来发布中被移除. 请使用/v1/icm/addresses/:address/messages 端点代替 :警告: 折旧
- 说吧 [过期] 获得公共Subnet RPC在指定时间间隔内使用的度量衡,这些度量衡在指定时间期限颗粒上汇总.dataUsageMetricsGetRpcUsageMetrics
⚠️ 这次行动将在未来发布中被移除. 请使用 /v1/ subnetRpcUsageMetrics 结尾代替:警告: 折旧
全球参数
某些参数是在全球配置的。 在初始化过程中,这些参数可能设定在SDK客户端实例上. 当在 SDK 初始化期间配置为选项时, 这些全局值将被用作使用它们的操作的默认值 。 当这种业务被调用时,如果需要,每个业务都有一个地方可以推翻全球价值.
例如,你可以设定 chainId 改为 "43114" 在 SDK 初始化时, 您无需将相同的值传递给操作 list。但如果您想要这样做,则您可以这样做,这将会在本地覆盖全球环境。 演示请参看下面的示例代码.
可用的全局
以下全球参数可供查阅.
| 名称 | 类型 | 说明 |
|---|---|---|
| 链路 | 字符串 | 被支持的EVM链式id,链式别名或块链式id. |
| 网络 | 组件。 全球制图网 | 支持的网络类型主网或测试网/fuji. |
示例
import { AvaCloudSDK } from "@avalabs/avacloud-sdk";
const avaCloudSDK = new AvaCloudSDK({
serverURL: "https://api.example.com",
chainId: "43114",
network: "mainnet",
});
async function run() {
const result = await avaCloudSDK.metrics.chains.list({
network: "mainnet",
});
for await (const page of result) {
console.log(page);
}
}
run();
倾斜
此 SDK 中的一些端点支持 pagination. 要用帕吉恩语,你
使您的 SDK 调用如常, 但返回的响应对象也将是
可使用下列设备消耗的同步可执行性: for await...of
语法.
举个例子说
import { AvaCloudSDK } from "@avalabs/avacloud-sdk";
const avaCloudSDK = new AvaCloudSDK({
serverURL: "https://api.example.com",
});
async function run() {
const result = await avaCloudSDK.metrics.chains.list({
network: "mainnet",
});
for await (const page of result) {
console.log(page);
}
}
run();
检索
此 SDK 中的一些端点支持重试. 如果在没有任何配置的情况下使用SDK,则会回落到API提供的默认重试策略. 然而,默认的重试策略可以在一次操作的基础上被推翻,或者在整个SDK中被推翻.
更改单个 API 调用默认重试策略, 只需为调用提供重试 Config 对象 :
import { AvaCloudSDK } from "@avalabs/avacloud-sdk";
const avaCloudSDK = new AvaCloudSDK({
serverURL: "https://api.example.com",
});
async function run() {
const result = await avaCloudSDK.metrics.healthCheck({
retries: {
strategy: "backoff",
backoff: {
initialInterval: 1,
maxInterval: 50,
exponent: 1.1,
maxElapsedTime: 100,
},
retryConnectionErrors: false,
},
});
console.log(result);
}
run();
如果您想要覆盖所有支持重试的操作的默认重试策略, 您可以在 SDK 初始化时提供重试Config :
import { AvaCloudSDK } from "@avalabs/avacloud-sdk";
const avaCloudSDK = new AvaCloudSDK({
serverURL: "https://api.example.com",
retryConfig: {
strategy: "backoff",
backoff: {
initialInterval: 1,
maxInterval: 50,
exponent: 1.1,
maxElapsedTime: 100,
},
retryConnectionErrors: false,
},
});
async function run() {
const result = await avaCloudSDK.metrics.healthCheck();
console.log(result);
}
run();
处理错误
AvaCloudSDKError 是所有 HTTP 错误响应的基础类。 其属性如下:
| 财产 | 类型 | 说明 |
|---|---|---|
error.message | string | 错误消息 |
error.statusCode | number | HTTP 响应状态代码 eg 404 |
error.headers | Headers | HTTP 响应头 |
error.body | string | HTTP 躯体. 如果没有尸体返回, 则可以是空字符串 . |
error.rawResponse | Response | 原始 HTTP 响应 |
error.data$ | 可选的 一些错误可能包含结构化数据. 参见错误类。 。 。 . |
示例
import { AvaCloudSDK } from "@avalabs/avacloud-sdk";
import * as errors from "@avalabs/avacloud-sdk/models/errors";
const avaCloudSDK = new AvaCloudSDK({
serverURL: "https://api.example.com",
chainId: "43114",
});
async function run() {
try {
await avaCloudSDK.data.nfts.reindex({
address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
tokenId: "145",
});
} catch (error) {
// The base class for HTTP error responses
if (error instanceof errors.AvaCloudSDKError) {
console.log(error.message);
console.log(error.statusCode);
console.log(error.body);
console.log(error.headers);
// Depending on the method different errors may be thrown
if (error instanceof errors.BadRequest) {
console.log(error.data$.message); // errors.Message
console.log(error.data$.statusCode); // number
console.log(error.data$.error); // string
}
}
}
}
run();
错误分类
主错误 :
AvaCloudSDKError: HTTP 错误响应的基础类.BadRequest:不良请求一般指客户端通过无效或畸形参数. 回复中的错误信息可能有助于评价错误. 状态代码400。 。 。 .Unauthorized:当客户端试图访问需要授权证书但客户端在请求中缺乏适当认证的资源时,服务器以401回复. 状态代码401。 。 。 .Forbidden:当客户端试图以有效资质访问资源但无权执行此动作时,服务器以403响应. 状态代码403。 。 。 .NotFound:当客户端请求使用错误的URL,或者通过的资源被移动或删除,或者资源不存在时,错误大多被返回. 状态代码404。 。 。 .TooManyRequests: 当客户端发送过多, 并且达到了速率限制时, 此错误会被返回 。 状态代码429。 。 。 .InternalServerError: 错误是一个通用的服务器侧错误, 对于服务器侧的任何未发现和出乎意料的问题都会被返回. 这应该非常罕见,如果问题持续了更长的时间,你可能会向我们伸出援手。 状态代码500。 。 。 .BadGateway: 这是一个内部错误, 表示客户端的代理服务器或网关从上游服务器收到的响应无效 。 状态代码502。 。 。 .ServiceUnavailable: 返回特定Subnet上某些路线的错误。 这表明我们的子网节点存在内部问题,可能并不一定意味着子网已经下架或受到影响. 状态代码503。 。 。 .
少常见错误(6)
网络错误 :
ConnectionError: HTTP 客户端无法向服务器提出请求.RequestTimeoutError: HTTP 请求由于中止信号而超时.RequestAbortedError:HTTP请求被客户端中止.InvalidRequestError: 用于创建请求的任何输入无效.UnexpectedClientError:无法识别或出乎意料的错误.
继承从 AvaCloudSDKError数字 :
ResponseValidationError:从服务器返回的数据和SDK期望的结构之间的类型不匹配. 见error.rawValue原值和error.pretty()用于格式化良好的多行字符串.
自定义 HTTP 客户端
TypeScript SDK 使用一个 HTTPClient 将本地人包裹起来
获取 API这个
客户端是薄薄的包装 fetch 并且提供连接钩子的能力
围绕可用于修改请求或处理的请求生命周期
错误和反应.
这个 HTTPClient 构造器使用可选 fetcher 参数可以是
用于整合第三方 HTTP 客户端或用于编写测试以嘲弄
hTTP 客户端并输入固定设备.
以下示例说明如何使用 "beforeRequest" 要添加的钩子
自定义标题和请求的超时及如何使用 "requestError" 钩子
记录错误 :
import { AvaCloudSDK } from "@avalabs/avacloud-sdk";
import { HTTPClient } from "@avalabs/avacloud-sdk/lib/http";
const httpClient = new HTTPClient({
// fetcher takes a function that has the same signature as native `fetch`.
fetcher: (request) => {
return fetch(request);
}
});
httpClient.addHook("beforeRequest", (request) => {
const nextRequest = new Request(request, {
signal: request.signal || AbortSignal.timeout(5000)
});
nextRequest.headers.set("x-custom-header", "custom value");
return nextRequest;
});
httpClient.addHook("requestError", (error, request) => {
console.group("Request Error");
console.log("Reason:", `${error}`);
console.log("Endpoint:", `${request.method} ${request.url}`);
console.groupEnd();
});
const sdk = new AvaCloudSDK({ httpClient });
认证
常客安全计划
这个SDK在全球支持以下安全计划:
| 名称 | 类型 | 计划 |
|---|---|---|
apiKey | 键 | API 密钥 |
用 API 认证 apiKey 初始化 SDK 客户端实例时必须设置参数 。 例如:
import { AvaCloudSDK } from "@avalabs/avacloud-sdk";
const avaCloudSDK = new AvaCloudSDK({
serverURL: "https://api.example.com",
apiKey: "<YOUR_API_KEY_HERE>",
});
async function run() {
const result = await avaCloudSDK.metrics.healthCheck();
console.log(result);
}
run();
调试
您可以为 SDK 请求和响应设置 SDK 以发送调试日志 .
你可以通过一个匹配的日志 console'作为 SDK 选项的接口.
[尖叫声] 注意调试日志会揭示一些秘密, 如标题中的 API 令牌, 打印到控制台或文件中的日志信息 。 建议只在本地开发期间使用这一特征,而不能用于生产.
import { AvaCloudSDK } from "@avalabs/avacloud-sdk";
const sdk = new AvaCloudSDK({ debugLogger: console });
内容提要
Data API:Data API为Web3应用程序开发者提供与Avalanche主网,Avalanche子网和Ethereum相关的多链数据. 通过Data API,您可以轻松地构建出能够利用实时和历史交易以及传输历史,本土和象征余额,以及各类象征元数据的产品. API位于Beta,可能会被更改.
如果您对 API 有反馈或功能请求, 请提交 这里。错误报告可以提交 这里,可以报告任何潜在的安全问题 这里。 。 。 .
目录
校验 Webhook 签名
ValidSignature函数是Avalanche SDK中的一种功能,它验证了AvaCloud收到的webhook请求的真实性和完整性. 该功能通过验证请求头中提供的HMAC SHA-256签名,确保请求来自可信任的来源. 使用量
导入和使用 isValidSignature 函数 :
import { isValidSignature } from '@avalabs/avacloud-sdk/utils';
import express from 'express';
const app = express();
app.use(express.json());
const signingSecret = 'your-signing-secret'; // Replace with your signing secret
app.post('/webhook', (req, res) => {
const signature = req.headers['x-signature'];
const payload = req.body;
if (isValidSignature(signingSecret, signature, payload)) {
console.log('Valid signature');
// Process the request
} else {
console.log('Invalid signature');
}
res.json({ received: true });
});
app.listen(8000, () => console.log('Server running on port 8000'));
参数
signingSecret:签名的秘密密钥.signature: HMAC SHA-256 从请求头签名.payload请求的JSON载荷.
更多信息
3⁄4 ̄ ̧漯B.
详情请访问 AvaCloud 开发者 文档.
发展
成熟度
这个SDK是在β中,在版本之间可能会有断裂的更改,而没有主要的版本更新. 因此,我们建议使用 到特定软件包版本。 这样,您可以每次安装同一版本而不中断更改,除非您是故意的 正在寻找最新版本.
捐款
虽然我们重视对SDK的开源贡献,但这个库是程序生成的. 任何加入内部文件的手动修改都会被覆盖到下一代上. 我们期待着听到你的反馈。 随便你开个公关 或一个有概念证明的问题 我们会尽力把它纳入未来的发行.