本文详细介绍了如何使用 Digital Asset Standard API (DAS) SDK 和 SvelteKit 创建一个应用程序,通过 getAssetsByGroup 方法在网页上显示 NFT 集合的图像。文章涵盖了所需的环境设置、代码实现的各个步骤以及示例代码,适合希望在 Solana 上开发 NFT 应用的开发者。
数字资产标准 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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!