Aller au contenu principal

Comment récupérer les données d'un objet

Public visé : développeurs implémentant leur première opération de lecture sur Sui.
Objectif : écrire un script Node.js pour récupérer et inspecter les données brutes d'un objet depuis le devnet de Sui.


Vue d'ensemble

Dans ce tutoriel, vous utilisez SuiClient pour effectuer une opération de lecture. Vous interrogez le devnet de Sui pour inspecter les attributs d'un objet jeton non fongible (NFT) sur la chaîne.

Ce que vous allez construire :
Un script Node.js léger qui se connecte au réseau, demande un objet par son identifiant et affiche la réponse JSON.

Prérequis

  • Node.js : v18.0.0 ou version ultérieure.
  • Gestionnaire de paquets : npm ou yarn.
  • Terminal : compétences de base en ligne de commande.

1. Configurer le projet

  1. Créez et accédez à un nouveau répertoire :

    Terminal
    mkdir sui-data-fetcher && cd sui-data-fetcher
  2. Initialisez un projet Node et configurez-le pour les modules ES :

    Terminal
    npm init -y
    npm pkg set type="module"
  3. Installez le SDK TypeScript de Sui :

    Terminal
    npm install @mysten/sui

2. Initialiser le client

Créez un fichier nommé index.js. Commencez par importer le client et connectez-le au devnet.

index.js
import { SuiClient, getFullnodeUrl } from '@mysten/sui/client';

// Configuration
const NETWORK = 'devnet';

// 1. Initialiser le client
// getFullnodeUrl résout automatiquement le bon point de terminaison RPC pour 'devnet'
const client = new SuiClient({
url: getFullnodeUrl(NETWORK),
});

console.log(`✅ Connecté à Sui ${NETWORK}`);

3. Écrire la logique de requête

Interrogez un objet « NFT DevNet » connu.

Remarque

Sur devnet, les objets sont fréquemment supprimés lors des réinitialisations du réseau. Si l'ID ci-dessous échoue, vous devrez peut-être trouver un nouvel identifiant d'objet sur Sui Explorer.

Ajoutez le code suivant à index.js :

index.js
// Un ID d'objet connu sur devnet (Exemple de NFT)
const TARGET_OBJECT_ID = '0x7d6539b7a423b035109b823e20c641c73defd23b8f3107b38d1d368688c2797c';

async function fetchObjectData() {
try {
console.log(`🔍 Requête de l'objet : ${TARGET_OBJECT_ID}...`);

// 2. Exécuter la récupération
const response = await client.getObject({
id: TARGET_OBJECT_ID,
// "options" détermine la quantité de données renvoyées par le nœud.
// Nous demandons uniquement le contenu (champs) pour limiter la taille de la charge utile.
options: {
showContent: true,
showType: true
}
});

// 3. Traiter la réponse
if (response.error) {
throw new Error(`Objet introuvable : ${response.error.code}`);
}

console.log('--- Données de l\'objet ---');
console.dir(response.data, { depth: null, colors: true });

} catch (err) {
console.error('❌ Échec de la requête :', err.message);
}
}

fetchObjectData();

4. Exécuter et vérifier

Exécutez le script dans votre terminal :

Terminal
node index.js

Comprendre la sortie

Vous devriez voir une structure JSON semblable à celle-ci :

Sortie
{
"objectId": "0x7d...",
"version": "120",
"digest": "AuF...",
"type": "0x2::devnet_nft::DevNetNFT",
"content": {
"dataType": "moveObject",
"fields": {
"name": "Sui DevNet NFT",
"description": "An NFT created by the Sui DevNet",
"url": "ipfs://..."
}
}
}
  • digest : un hachage vérifiant la version de l'objet.
  • type : la définition de type spécifique au langage Move (Paquet::Module::Type).
  • content.fields : les données réelles stockées sur la chaîne (par exemple le nom, la description et l'URL de l'image du NFT).

Prochaines étapes

Vous avez réussi à récupérer des données brutes, mais vous avez sans doute remarqué le paramètre options dans le code. Pour explorer les paramètres de requête disponibles et poursuivre votre apprentissage :