Lorsque vous appelez une opération OpenAPI, nous vous recommandons d'intégrer le SDK à votre projet. L'utilisation d'un SDK simplifie le développement, permet une intégration rapide des fonctionnalités et réduit les coûts de maintenance. L'intégration d'un SDK Alibaba Cloud comprend trois étapes principales : importer le SDK, configurer les identifiants d'accès et utiliser le SDK. Cette rubrique décrit en détail le processus d'intégration du SDK.
Prérequis
Node.js >= 8.x
Importer le SDK
Connectez-vous au SDK Center et sélectionnez le produit associé à l'API que vous souhaitez appeler, par exemple Short Message Service (SMS).
Sur la page Installation et All Languages sur TypeScript. Ensuite, dans l'onglet Quick Start, vous trouverez les instructions d'installation du SDK pour Short Message Service (SMS).

Configurer les identifiants d'accès
L'appel d'opérations OpenAPI nécessite des identifiants d'accès tels qu'une AccessKey ou un Security Token Service (STS) token. Stockez ces identifiants dans des variables d'environnement pour éviter toute fuite. Pour connaître les bonnes pratiques, consultez la rubrique Utiliser les identifiants d'accès en toute sécurité. Les exemples ci-dessous utilisent les variables d'environnement ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET.
Méthode de configuration sous Linux et macOS
Les exemples suivants utilisent ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET comme noms de variables. Remplacez-les par vos propres noms si nécessaire, par exemple OSS_ACCESS_KEY_ID et OSS_ACCESS_KEY_SECRET.
Exécutez les commandes export suivantes pour définir les variables d'environnement :
Les variables définies avec export sont temporaires et valables uniquement pour la session en cours. Pour les rendre persistantes, ajoutez la commande export à votre fichier de démarrage de shell (tel que ~/.bashrc ou ~/.zshrc).
-
Définissez l'ID AccessKey :
# Replace yourAccessKeyID with your AccessKey ID. export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID -
Définissez le secret AccessKey :
# Replace yourAccessKeySecret with your AccessKey secret. export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret -
Vérifiez la configuration.
Exécutez
echo $ALIBABA_CLOUD_ACCESS_KEY_ID. Si la valeur correcte s'affiche, la configuration a réussi.
Méthode de configuration sous Windows
Utiliser l'interface graphique (GUI)
-
Procédure
Les étapes suivantes décrivent comment définir les variables d'environnement à l'aide de l'interface graphique sous Windows 10.
Sur votre bureau, cliquez avec le bouton droit sur This PC, puis choisissez Properties > Advanced system settings > Environment Variables > New dans la section System variables ou User variables. Ensuite, terminez la configuration.
Variable
Example value
AccessKey ID
Variable name: ALIBABA_CLOUD_ACCESS_KEY_ID
Variable value: yourAccessKeyID
AccessKey secret
Variable name: ALIBABA_CLOUD_ACCESS_KEY_SECRET
Variable value: yourAccessKeySecret
-
Testez la configuration
Cliquez sur Start (ou utilisez le raccourci clavier Win+R), cliquez sur Run, saisissez
cmd, puis cliquez sur OK (ou appuyez sur Entrée) pour ouvrir l'invite de commandes. Exécutez les commandesecho %ALIBABA_CLOUD_ACCESS_KEY_ID%etecho %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Si les commandes renvoient l'AccessKey correct, la configuration a réussi.
Utiliser l'invite de commandes (CMD)
-
Procédure
Ouvrez l'invite de commandes en tant qu'administrateur et exécutez les commandes suivantes pour ajouter de nouvelles variables d'environnement au système.
setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /MLe paramètre
/Mindique une variable d'environnement système. Vous pouvez omettre ce paramètre lorsque vous définissez une variable d'environnement utilisateur. -
Testez la configuration
Cliquez sur Start (ou utilisez le raccourci clavier Win+R), cliquez sur Run, saisissez
cmd, puis cliquez sur OK (ou appuyez sur Entrée) pour ouvrir l'invite de commandes. Exécutez les commandesecho %ALIBABA_CLOUD_ACCESS_KEY_ID%etecho %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Si les commandes renvoient l'AccessKey correct, la configuration a réussi.
Utiliser Windows PowerShell
Dans PowerShell, vous pouvez définir de nouvelles variables d'environnement valables pour toutes les nouvelles sessions :
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::User)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::User)
Pour définir des variables d'environnement pour tous les utilisateurs, vous devez disposer des autorisations administratives :
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::Machine)
Vous pouvez définir des variables d'environnement temporaires valables uniquement pour la session en cours :
$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "yourAccessKeyID"
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "yourAccessKeySecret"
Dans PowerShell, exécutez les commandes Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID et Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET. Si les commandes renvoient l'AccessKey correct, la configuration a réussi.
Utiliser le SDK
Cette rubrique fournit un exemple d'appel de l'opération API ou SendMessageToGlobe de Short Message Service (SMS). Pour la référence API de l'opération ou SendMessageToGlobe, consultez ou SendMessageToGlobe.
1. Initialiser le client de requête
Tous les appels OpenAPI passent par un client de requête. Cet exemple initialise un client avec une paire AccessKey. Pour d'autres méthodes d'initialisation, consultez la rubrique Gérer les identifiants d'accès.
Les objets clients, tels que les instances Dysmsapi20180501 et , sont thread-safe et peuvent être utilisés dans un environnement multithread sans avoir besoin de créer une instance distincte pour chaque thread.
Évitez de créer plusieurs fois des objets clients avec
new. Utilisez le modèle singleton afin qu'une seule instance de client existe par identifiant et endpoint tout au long du cycle de vie de l'application.
Exemple TypeScript
import Dysmsapi20180501, * as $Dysmsapi20180501 from '@alicloud/dysmsapi20180501';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import Util, * as $Util from '@alicloud/tea-util';
export default class Client {
static createClient(): Dysmsapi20180501 {
let config = new $OpenApi.Config({
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
});
// For more information about the endpoint, see https://api.alibabacloud.com/product/Dysmsapi.
config.endpoint = `dysmsapi.aliyuncs.com`;
return new Dysmsapi20180501(config);
}
}
Exemple Node.js
const Dysmsapi20180501 = require('@alicloud/dysmsapi20180501');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
const Tea = require('@alicloud/tea-typescript');
class Client {
static createClient() {
let config = new OpenApi.Config({
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
});
// For more information about the endpoint, see https://api.alibabacloud.com/product/Dysmsapi.
config.endpoint = `dysmsapi.aliyuncs.com`;
return new Dysmsapi20180501.default(config);
}
}
2. Créer l'objet de requête
Transmettez les paramètres via l'objet de requête du SDK, nommé <Nom OpenAPI>Request (par exemple, SendSmsRequest). Pour plus de détails sur les paramètres, consultez la référence API : SendMessageToGlobe.
Si une API ne comporte aucun paramètre de requête, ignorez cette étape. Par exemple, DescribeCdnSubList ne nécessite aucun objet de requête.
Exemple TypeScript
// Create request object and set required input parameters
let sendMessageToGlobeRequest = new $Dysmsapi20180501.SendMessageToGlobeRequest({
// Please replace with the actual recipient number.
to: "<YOUR_VALUE>",
// Please replace with the actual SMS content.
message: "<YOUR_VALUE>",
});
Exemple Node.js
// Create request object and set required input parameters
let sendMessageToGlobeRequest = new Dysmsapi20180501.SendMessageToGlobeRequest({
// Please replace with the actual recipient number.
to: '<YOUR_VALUE>',
// Please replace with the actual SMS content.
message: '<YOUR_VALUE>',
});
3. Envoyer la requête
Appelez la fonction <nomOpération>WithOptions du client, où <operationName> correspond au nom de l'API en camel case. Cette fonction prend un objet de requête et des paramètres d'exécution (délai d'attente, proxy, etc.). Consultez la rubrique Configurations avancées.
Si une API ne comporte aucun paramètre de requête, transmettez uniquement les options d'exécution. Par exemple, DescribeCdnSubList nécessite uniquement des paramètres d'exécution.
Exemple TypeScript
// Create runtime parameters.
let runtime = new $Util.RuntimeOptions({ });
let client = Client.createClient();
// Send a request.
await client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);
Exemple Node.js
// Create runtime parameters.
let runtime = new Util.RuntimeOptions({ });
let client = Client.createClient();
// Send a request.
await client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);
4. Gérer les exceptions
Le SDK Node.js V2.0 génère deux types d'exceptions :
UnretryableError : générée après épuisement du nombre maximal de tentatives, généralement en raison de problèmes réseau. Récupérez la dernière requête via
err.data.lastRequest.ResponseError : indique une erreur côté serveur renvoyée par l'API.
Consultez la rubrique Gestion des exceptions.
Gérez toujours les exceptions — propagez-les, journalisez-les ou récupérez-les. Ne les ignorez jamais silencieusement.
Cliquez pour afficher l'exemple de code complet
Téléchargement de fichiers avec les opérations Advance
Certaines API (telles que la recherche d'images et Visual Intelligence) n'acceptent pas directement les chemins de fichiers locaux. Utilisez l'opération Advance pour télécharger des fichiers via un flux. Le SDK stocke temporairement le fichier dans un bucket OSS dans la région cn-shanghai, et le service le lit à partir de cet emplacement. Cet exemple utilise l'opération DetectBodyCount de l'API Visual Intelligence.
Les fichiers temporaires stockés dans Alibaba Cloud OSS sont supprimés périodiquement.
-
Initialiser le client de requête
Définissez
regionIdetendpointsur la même région. La valeurregionIddétermine l'emplacement de stockage du fichier OSS temporaire. Si vous omettezregionId, une incompatibilité de région entre le produit et le bucket OSS entraîne des délais d'expiration.Exemple TypeScript
function createClient(): facebody20191230 { let config = new $OpenApi.Config({ // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set. accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set. accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], }); // The endpoint and regionId must be for the same region. config.regionId = 'cn-shanghai'; config.endpoint = 'facebody.cn-shanghai.aliyuncs.com'; return new facebody20191230(config); }Exemple Node.js
function createClient() { let config = new OpenApi.Config({ // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set. accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set. accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], }); // The endpoint and regionId must be for the same region. config.regionId = 'cn-shanghai'; config.endpoint = 'facebody.cn-shanghai.aliyuncs.com'; return new facebody20191230.default(config); } -
Créer l'objet de requête
Créez un objet <NomOpenAPI>AdvanceRequest pour transmettre le flux de fichiers. Le nom du paramètre pour le flux de fichiers est
ImageURLObject.Exemple TypeScript
// Read the file as a file stream. const filePath = '<FILE_PATH>'; // Replace this with the actual file path. // Check if the file exists. if (!fs.existsSync(filePath)) { console.error('File does not exist:', filePath); return; } // Create a stream and listen for stream errors. const fileStream = fs.createReadStream(filePath).on('error', (err) => { console.error('Stream error:', err); process.exit(1); }); let detectBodyCountAdvanceRequest = new $facebody20191230.DetectBodyCountAdvanceRequest({ imageURLObject: fileStream, });Exemple Node.js
// Read the file as a file stream. const filePath = '<FILE_PATH>'; // Replace this with the actual file path. // Check if the file exists. if (!fs.existsSync(filePath)) { console.error('File does not exist:', filePath); return; } // Create a stream and listen for stream errors. const fileStream = fs.createReadStream(filePath).on('error', (err) => { console.error('Stream error:', err); process.exit(1); }); let detectBodyCountAdvanceRequest = new facebody20191230.DetectBodyCountAdvanceRequest({ imageURLObject: fileStream, }); -
Envoyer la requête
Appelez la fonction <nomOpération>Advance pour envoyer la requête.
Exemple TypeScript
// Configure runtime parameters. let runtime = new $Util.RuntimeOptions({ }); let client = Client.createClient(); // Send the request. await client.detectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);Exemple Node.js
// Configure runtime parameters. let runtime = new Util.RuntimeOptions({ }); let client = Client.createClient(); // Send the request. await client.detectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);
FAQ
-
Erreur « You are not authorized to perform this operation » lors de l'appel d'une API
-
Erreur « triggerUncaughtException Error: getaddrinfo ENOTFOUND » (problème d'endpoint)
-
Erreur « Cannot read properties of undefined (reading 'getCredential') » ou « InvalidAccessKeyId.NotFound: code: 404 »
Pour d'autres erreurs courantes, consultez la rubrique FAQ.