块冻-js
块霜.io SDK为JavaScript为节点.js.
开始 二. 支助 安装 二. 支助 使用量 二. 支助 实例 二. 支助 SDK API 参考文献
开始
要使用此 SDK, 您首先需要登录到 blockfrost.io 区名,创建您的项目并取回 API 令牌.
安装
要运行SDK,你需要Node.js版本16和更高. 虽然你可能会找到一种方法直接在浏览器中运行,但我们不积极支持或提供此情景的排除故障协助. 我们建议自己建立节点Js后端 在前端应用程序中显示您的 API 密钥几乎总是个坏主意.
SDK是挂载在 npmjs.com (英语),因此可以直接使用您最喜欢的软件包管理器来导入.
npm i @blockfrost/blockfrost-js
yarn add @blockfrost/blockfrost-js
使用量
从下面的例子中可以看出,使用SDK是相当直线的. 更多例子请查看 块冻-js-实例 仓库.
所有 SDK 方法列表 看看我们的维基。 。 。 .
const Blockfrost = require('@blockfrost/blockfrost-js');
// import { BlockFrostAPI } from '@blockfrost/blockfrost-js'; // using import syntax
const API = new Blockfrost.BlockFrostAPI({
projectId: 'YOUR API KEY HERE', // see: https://blockfrost.io
// For a list of all options see section below
});
选项
projectId- 说吧string, Blockfrost 项目ID(需要)network- 说吧string,用于指定项目ID的 Cardano 网络。 (可选的,默认值来自projectId(如果可能的话) 可能的值 :mainnet, (中文(简体) ),testnet, (中文(简体) ),preview, (中文(简体) ),preprod。 。 。 .rateLimiter- 说吧boolean或者说RateLimiterConfig,是否启用匹配的限速器 块冻 API 限制 (可选,默认)true) (中文(简体) ). 如果您的IP地址是白名单, 您可能想要禁用它 。 您也可以自定义自定义利率限制符 配置对象。 。 。 .requestTimeout- 说吧number,等待请求完成多久,以毫秒计(可选,默认)20000(中文(简体) )retrySettings- 说吧RequiredRetryOptions,用于重试失败请求的定制(可选, 默认值请点击此处(中文(简体) )debug- 说吧boolean,是否启用调试日志。 也可以通过设置环境变量来实现DEBUG改为true(可选,默认)false) (中文(简体) ).customBackend- 说吧string,将 URL 设置为非官方后端的选项(可选)version- 说吧number, Blockfrost API 版本(可选,默认)0(中文(简体) )gotOptions- 更多选项要传给哥特实例。 详情请参见: 有选项文档。 。 。 .
处理错误
Blockfrost Node.js SDK 抛出两种错误, BlockfrostServerError 财务报告和审定财务报表 BlockfrostClientError。每个错误都从内置中扩展 Error 班级,允许你正确抓住它 并用代码处理它.
BlockfrostServerError
BlockfrostServerError 是一个由 Blockfrost API 直接返回的错误。 错误对象的属性匹配 与 Blockfrost API 定义的格式相同,并增加 url 设置到 URL 的字段 body 字段设置为错误反应的原始正文,如果错误没有被 Blockfrost 后端(如 nginx)返回.
示例
Blockfrost API 返回 404,对于目前链条上不存在的任何资源都没有找到,即使理论上它可能存在. 更详细的解释检查 Blockfrost 开发者门户网站。 。 。 .
// Example demonstrating catching BlockfrostServerError
try {
const address = await API.addresses('totallyValidAddress');
} catch (error) {
if (
error instanceof Blockfrost.BlockfrostServerError &&
error.status_code === 404
) {
// address was not used before, but most likely we don't want to throw an error
console.log("Address is totally empty! But that's ok!");
} else {
// rethrow other errors
throw error;
}
}
BlockfrostClientError
BlockfrostClientError 是Blockfrost API服务器未返回的错误。 在这种情况下,请求从未到达我们的后端。 最常见的原因与网络有关.
形状 BlockfrostClientError 对象与 BlockfrostServerError。错误已经 code 财务报告和审定财务报表 message 和可选 url 用于帮助您调查此问题的财产.
以下是一个显示错误格式的小例子:
{
"code": "ENOTFOUND",
"message": "getaddrinfo ENOTFOUND api.blockfrost.io",
"url": "https://cardano-mainnet.blockfrost.io/api/v0/addresses/addr1qxqs59lph(truncated)"
}
示例
// Example demonstrating catching a network-related client error
try {
const address = await API.addresses('totallyValidAddress');
} catch (error) {
if (error instanceof Blockfrost.BlockfrostClientError) {
console.log('Oops, error during sending the request');
}
// Depending on your use case you may want to rethrow the error
throw error;
}
实例
更多例子请查看 块冻-js-实例 仓库.
所有 SDK 方法列表 看看我们的维基。 。 。 .
卡多诺
const Blockfrost = require('@blockfrost/blockfrost-js');
// import { BlockFrostAPI } from '@blockfrost/blockfrost-js'; // using import syntax
const API = new Blockfrost.BlockFrostAPI({
projectId: 'YOUR API KEY HERE', // see: https://blockfrost.io
});
async function runExample() {
try {
const latestBlock = await API.blocksLatest();
const networkInfo = await API.network();
const latestEpoch = await API.epochsLatest();
const health = await API.health();
const address = await API.addresses(
'addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz',
);
const pools = await API.pools({ page: 1, count: 10, order: 'asc' });
console.log('pools', pools);
console.log('address', address);
console.log('networkInfo', networkInfo);
console.log('latestEpoch', latestEpoch);
console.log('latestBlock', latestBlock);
console.log('health', health);
} catch (err) {
console.log('error', err);
}
}
runExample();
森林小组
const Blockfrost = require('@blockfrost/blockfrost-js');
// import { BlockFrostIPFS } from '@blockfrost/blockfrost-js'; // using import syntax
const IPFS = new Blockfrost.BlockFrostIPFS({
projectId: 'YOUR IPFS KEY HERE', // see: https://blockfrost.io
});
async function runExample() {
try {
const added = await IPFS.add(`${__dirname}/img.svg`);
console.log('added', added);
const pinned = await IPFS.pin(added.ipfs_hash);
console.log('pinned', pinned);
} catch (err) {
console.log('error', err);
}
}
runExample();
工具函数
Blockfrost SDK输出了几种功能来改进开发者的经验.
发展
添加新方法
- 在相应的文件中添加代码 。 例如,新账户方法属于
src/endpoints/api/account/目录.- 添加
<method>All带有页点的终点方法 - 更新 信息技术事务司 用于添加方法
- 添加
- 添加类方法到
BlockfrostAPI对象在 src/ BlockFrostAPI.ts 互联网档案馆的存檔,存档日期2013-12-02。 。 。 . - 为添加的方法添加单位测试固定器 测试/固定/端点
- 重生维基文件
yarn docs- 将文件推到 Wiki 仓库
https://github.com/blockfrost/blockfrost-js.wiki.git