Comment récupérer des données d'objets
Public : développeurs mettant en œuvre leur première opération de lecture Sui.
Objectif : écrire un script Node.js pour récupérer et inspecter les données brutes des objets du devnet de Sui.
Vue d'ensemble
Dans ce tutoriel, l'utilisation du SuiClient effectue une opération de lecture, interrogeant le Sui devnet pour un objet Non-Fungible Token (NFT) spécifique afin de voir ses attributs sur la chaîne.
Ce qui est construit: Un script Node.js léger qui se connecte au réseau, demande un objet par son ID, et imprime la réponse JSON.
Prérequis
- Node.js: v18.0.0 ou plus récent.
- Package Manager:
npmouyarn. - Terminal: Compétences de base en ligne de commande.
Étape 1 : Configuration du projet
-
Créez un nouveau répertoire et naviguez-y :
mkdir sui-data-fetcher && cd sui-data-fetcher -
Initialiser un projet Node et le configurer pour les modules ES :
npm init -y
npm pkg set type="module" -
Installer le SDK TypeScript de Sui :
npm install @mysten/sui
Étape 2 : Initialiser le client
Créez un fichier nommé index.js. Commencez par importer le client et connectez-le à devnet.
import { SuiClient, getFullnodeUrl } from '@mysten/sui/client';
// Configuration
const NETWORK = 'devnet';
// 1. initialisation du client
// getFullnodeUrl résout automatiquement le point de terminaison RPC correct pour 'devnet'
const client = new SuiClient({
url: getFullnodeUrl(NETWORK),
});
console.log(`✅ Connecté à Sui ${NETWORK}`);
Étape 3 : Écrire la logique de la requête
Interroger un objet "devnet Non-Fungible Token (NFT)" connu.
Note: Sur
devnet, les objets sont fréquemment supprimés lors des nettoyages du réseau. Si l'ID ci-dessous échoue, vous pouvez avoir besoin de trouver un nouvel ID d'objet depuis le Sui Explorer.
Ajoutez le code suivant à index.js :
// Un ID d'objet connu sur devnet (Exemple NFT)
const TARGET_OBJECT_ID = '0x7d6539b7a423b035109b823e20c641c73defd23b8f3107b38d1d368688c2797c';
async function fetchObjectData() {
try {
console.log(`🔍 Querying object: ${TARGET_OBJECT_ID}...`);
// 2. exécuter la recherche
const response = await client.getObject({
id: TARGET_OBJECT_ID,
// "options" détermine la quantité de données renvoyées par le nœud.
// Nous ne demandons que le contenu (champs) afin de limiter la charge utile.
options: {
showContent: true,
showType: true
}
});
// 3. gérer la réponse
if (response.error) {
throw new Error(`Objet non trouvé : ${response.error.code}`);
}
console.log('--- Object Data ---');
console.dir(response.data, { depth: null, colors: true });
} catch (err) {
console.error('❌ Query failed:', err.message);
}
}
fetchObjectData();
Étape 4 : Exécution et vérification
Exécutez le script dans votre terminal :
node index.js
Comprendre la sortie
Vous devriez voir une structure JSON comme celle-ci :
{
"objectId": "0x7d...",
"version": "120",
"digest": "AuF...",
"type": "0x2::devnet_nft::DevNetNFT",
"content": {
"dataType": "moveObject",
"fields": {
"name": "Sui DevNet NFT",
"description": "Un NFT créé par le Sui DevNet",
"url": "ipfs://..."
}
}
}
digest: un hash vérifiant la version de l'objet.type: la définition spécifique du type Move Language (Package::Module::Type).content.fields: Les données réelles stockées sur la chaîne (par exemple, le nom et l'adresse du NFT).
Prochaines étapes
Vous avez réussi à récupérer des données brutes, mais vous avez probablement remarqué le paramètre options dans le code. Pour savoir exactement quelles données vous pouvez demander, consultez la référence de l'API.