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 :
npmouyarn. - Terminal : compétences de base en ligne de commande.
1. Configurer le projet
-
Créez et accédez à un nouveau répertoire :
Terminalmkdir sui-data-fetcher && cd sui-data-fetcher -
Initialisez un projet Node et configurez-le pour les modules ES :
Terminalnpm init -ynpm pkg set type="module" -
Installez le SDK TypeScript de Sui :
Terminalnpm install @mysten/sui
2. Initialiser le client
Créez un fichier nommé index.js. Commencez par importer le client et connectez-le au devnet.
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.
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 :
// 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 :
node index.js
Comprendre la sortie
Vous devriez voir une structure JSON semblable à celle-ci :
{
"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 :
- Consultez la référence de l'API
getObjectpour découvrir toutes les options de réponse et filtres disponibles. - Consultez Comment récupérer plusieurs objets et Comment récupérer des objets détenus pour les requêtes par lots.
- Passez au tutoriel suivant, Utilisation d'une opération d'écriture pour envoyer une transaction, pour construire et exécuter des modifications d'état sur la chaîne.