本文详细介绍了如何使用 Digital Asset Standard API (DAS) SDK 和 SvelteKit 创建一个应用程序,通过 getAssetsByGroup 方法在网页上显示 NFT 集合的图像。文章涵盖了所需的环境设置、代码实现的各个步骤以及示例代码,适合希望在 Solana 上开发 NFT 应用的开发者。
5 分钟阅读
2023年7月22日
数字资产标准 API (DAS) SDK 通过引入类型、一行代码的抽象和格式正确的响应,简化了在 Solana 上处理压缩和 DAS 的过程。
本教程将逐步指导你使用 DAS SDK 在网页上显示 NFT 收藏中的图像,使用 getAssetsByGroup
方法。此外,本教程还将为更复杂场景中使用 DAS SDK 打下基础。
为便于最大限度地利用本教程,请确保你具备以下先决条件:
为了跟随本教程,我们建议使用提供的模型仓库,位置 这里。
查看此构建的实时视图,这里。
首先,我们需要设置一个新的 SvelteKit 项目。你可以使用 create-svelte 模板来设置项目结构。在终端中运行以下命令:
代码
git clone https://github.com/helius-labs/das-ui.git
然后导航到新的目录:
代码
cd das-ui
接下来,安装项目依赖项:
代码
npm install
在 src/lib/util 目录中创建一个名为 collection.ts 的新文件。
在这个文件中,设置一个 getCollection
函数,如下所示:
代码
import { Helius } from 'helius-sdk';
export async function getCollection() {
// 请求代码在这里 //
}
getCollection
函数是一个异步函数,用于从 DAS API 检索 NFT 数据集合。它使用 Helius SDK 进行 RPC 请求,而无需设置 fetch 或 axios 调用。
nftData
' 的任何数据。如果存在,解析该 JSON 数据并返回。代码
const storedData = localStorage.getItem('nftData');
if (storedData !== null) {
return JSON.parse(storedData);
}
这是一种缓存形式,用于减少不必要的网络请求,如果数据之前已经被获取。你可以输入自己定制的缓存和加载逻辑。
代码
const helius = new Helius('YOUR_API_KEY');
代码
let results = [];
let page = 1;
let paginate = true;
paginate
为 true 的情况下继续运行。在此循环内,我们使用 helius.rpc.getAssetsByGroup()
向 DAS API 发起请求。我们提供组键、组值和当前页码。代码
while (paginate) {
try {
const response = await helius.rpc.getAssetsByGroup({
groupKey: 'collection',
groupValue: 'YOUR_COLLECTION_VALUE',
page: page,
});
...
}
...
}
paginate
设置为 false 以退出循环。如果没有,我们增大 page
变量,在下一次循环迭代中获取下一组项目。代码
const nfts = response.items;
// 如果返回的项目数量少于 1000,则停止分页
if (nfts.length < 1000) {
paginate = false;
} else {
// 否则,增加页码以获取下一页结果
page++;
}
name
和 image
,并将其添加到 results
数组中。代码
for (const nft of nfts) {
const name = nft.content?.metadata.name;
const image = nft.content?.links?.image;
results.push({ name, image });
}
代码
localStorage.setItem('nftData', JSON.stringify(results));
return results;
以下是完整代码:
代码
import { Helius } from 'helius-sdk';
export async function getCollection() {
const storedData = localStorage.getItem('nftData');
if (storedData !== null) {
return JSON.parse(storedData);
}
const helius = new Helius('YOUR_API_KEY');
let results = [];
let page = 1;
let paginate = true;
while (paginate) {
try {
const response = await helius.rpc.getAssetsByGroup({
groupKey: 'collection',
groupValue: '8Rt3Ayqth4DAiPnW9MDFi63TiQJHmohfTWLMQFHi4KZH',
page: page,
});
const nfts = response.items;
// 如果返回的项目数量少于 1000,则停止分页
if (nfts.length < 1000) {
paginate = false;
} else {
// 否则,增加页码以获取下一页结果
page++;
}
for (const nft of nfts) {
const name = nft.content?.metadata.name;
const image = nft.content?.links?.image;
results.push({ name, image });
}
localStorage.setItem('nftData', JSON.stringify(results));
return results;
} catch (e) {
console.log(e);
}
}
}
记得将 YOUR_API_KEY
替换为你实际的 Helius API 密钥,并将 groupValue 替换为你希望显示的实际收藏值。在本示例中,我们的 groupValue
是 8Rt3Ayqth4DAiPnW9MDFi63TiQJHmohfTWLMQFHi4KZH
,这是 Solana Monkey Business Gen 3 的收藏 ID。
<script>
标签内设置必要的导入。在这段代码中我们:
getCollection
函数以在此组件中使用。getCollection
函数,然后设置我们的集合数据。在上面的代码中我们:
以下是完整代码:
在这一步中,我们将我们的集合组件导入到主页面。
在此步骤中我们:
<style>
标签中添加头部样式。<h1>
下面。现在你准备好启动 SvelteKit 服务器。在终端中运行以下命令:
代码
npm run dev
恭喜你!你成功设置了一个使用 Helius SDK 来获取和显示 NFT 收藏的 SvelteKit 项目。在 collection.ts 中设置的函数是灵活的,可以在不同的框架中使用。本教程为利用 DAS SDK 处理更复杂用例打下了基础。
- 原文链接: helius.dev/blog/solana-d...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!