Exploitez le SDK Node.js d'Alibaba Cloud pour invoquer facilement les opérations d'API dans DataService Studio et récupérer des données spécifiques. Cette rubrique illustre l'utilisation du SDK Node.js pour appeler l'API des métriques prédéfinies, en présentant la méthode et un exemple concret.
Prérequis
Pour appeler l'API des métriques prédéfinies, assurez-vous que le produit et le dispositif sont créés et que la sauvegarde des données est terminée. Pour obtenir des instructions détaillées, consultez la rubrique API pour les métriques prédéfinies.
Pour invoquer l'API de données produit ou personnaliser une API de service, vérifiez que l'API correspondante est établie. Pour plus de détails, reportez-vous aux rubriques Product data API et Customize service API.
Pour en savoir plus, consultez la documentation de référence.
Installation du SDK
Pour configurer l'environnement de développement Node.js, visitez le site officiel de Node.js et suivez les instructions d'installation fournies.
-
Pour installer le SDK OpenAPI d'Alibaba Cloud, exécutez les commandes ci-dessous.
npm install @alicloud/openapi-client npm install @alicloud/iot20180120
Envoi d'une requête
L'exemple suivant montre comment appeler les statistiques historiques du nombre de dispositifs à partir de l'API des métriques prédéfinies dans DataService Studio. Adaptez le code selon les descriptions des paramètres pour appeler l'API souhaitée.
Notez que le nombre maximal de requêtes par seconde (QPS) pour un seul compte Alibaba Cloud lors de l'appel à l'API DataService Studio est de 100.
const Config = require('@alicloud/openapi-client').Config;
const ListAnalyticsDataRequest = require('@alicloud/iot20180120').ListAnalyticsDataRequest;
const IotClient = require('@alicloud/iot20180120');
const ListAnalyticsDataRequestCondition = require('@alicloud/iot20180120/dist/client').ListAnalyticsDataRequestCondition;
// Create a client
const config = new Config();
config.endpoint = "iot.cn-shanghai.aliyuncs.com";
config.accessKeyId = "LTAI****************";
config.accessKeySecret = "yourAccessKeySecret";
config.regionId = "cn-shanghai";
async function main() {
const client = new IotClient.default(config);
// Create a request object
const listAnalyticsDataRequest = new ListAnalyticsDataRequest();
// Your API Path
listAnalyticsDataRequest.apiPath = '/iot-cn-npk1v******/system/query/hist_dev_cnt_stat'
// Paging parameter: page number
listAnalyticsDataRequest.pageNum = 1;
// Paging parameter: page size
listAnalyticsDataRequest.pageSize = 100;
// The instance ID where your API is located
listAnalyticsDataRequest.iotInstanceId = 'iot-cn-npk1v******'
// Your API business-related request parameters. For the configuration description of Condition, see the relevant description below.
const conditions = [];
const condition = new ListAnalyticsDataRequestCondition();
condition.operate = '=';
condition.fieldName = '__instance_id__';
condition.value = 'iot-public'
conditions.push(condition)
const condition1 = new ListAnalyticsDataRequestCondition();
condition1.operate = '=';
condition1.fieldName = 'entityId';
condition1.value = 'all'
conditions.push(condition1)
const condition2 = new ListAnalyticsDataRequestCondition();
condition2.operate = '=';
condition2.fieldName = 'statDate';
condition2.value = '20210221'
conditions.push(condition2)
listAnalyticsDataRequest.condition = conditions;
try {
const response = await client.listAnalyticsData(listAnalyticsDataRequest)
console.log(response)
} catch (ex) {
console.log(ex);
}
}
main();
-
Paramètres de requête système :
Nom
Type
Obligatoire
Valeur d'exemple
Description
endpoint
String
Oui
iot.cn-shanghai.aliyuncs.com
Le endpoint du serveur d'API de service Alibaba Cloud. Assurez-vous que la région correspond à celle du produit IoT Platform.
Dans cet exemple, la région est Chine de l'Est 2 (cn-shanghai).
accessKeyId
String
Oui
LTAI**
Accédez à la console IoT Platform, placez le curseur sur l'image de profil du compte et cliquez sur AccessKey Management pour récupérer l'AccessKey ID et l'AccessKey Secret.
RemarqueLes utilisateurs Resource Access Management (RAM) doivent disposer de la stratégie AliyunIOTFullAccess attachée pour gérer les ressources IoT Platform. À défaut, la connexion échouera. Pour plus de détails sur l'autorisation, consultez Grant RAM user access to IoT Platform.
accessKeySecret
String
Oui
**
regionId
String
Oui
cn-shanghai
Le code de la région. Pour la liste des régions prises en charge, consultez Supported regions.
apiPath
String
Oui
iot-cn-npk1u
Le chemin de l'opération d'API. Consultez la liste des API dans DataService Studio et cliquez sur View pour accéder à la page produit de l'API afin d'obtenir la valeur API Patch. Pour plus de détails, voir la documentation de référence.
pageNum
Integer
Requis lorsque la pagination est activée
1
Le numéro de page pour la pagination.
pageSize
Integer
Requis lorsque la pagination est activée
100
Le nombre d'entrées par page, avec un maximum de 100.
iotInstanceId
String
Oui
iot-cn-npk1v
L'ID de l'instance où votre API est déployée.
-
Paramètres de requête liés au métier :
Nom
Type
Obligatoire
Description
Code associé
fieldName
String
Oui
Le nom du champ pour le paramètre de requête.
condition.fieldName = '__instance_id__';operate
String
Oui
L'opérateur utilisé pour le paramètre de requête. Les options incluent :
=pour les correspondances exactes.BETWEENpour les plages.INpour plusieurs valeurs.!=pour les exclusions.
condition.operate = '=';value
String
Non
La valeur spécifique pour le paramètre de requête.
ImportantCe paramètre est obligatoire sauf si l'opérateur est
BETWEEN.condition.value = 'iot-public';betweenStart
String
Non
La valeur de début pour un paramètre de plage.
ImportantRequis lorsque l'opérateur est
BETWEEN.condition.betweenStart = '0';betweenEnd
String
Non
La valeur de fin pour un paramètre de plage.
ImportantRequis lorsque l'opérateur est
BETWEEN.condition.betweenEnd = '1000';Chaque paramètre de requête est associé à une
condition. Vous pouvez définir un nombre spécifique deconditionssur la page produit de l'API. Pour plus de détails sur l'affichage des paramètres de requête d'API, consultez Manage API.Dans l'exemple de code fourni, l'API comporte trois paramètres de requête : __instance_id__, entityId et statDate, qui correspondent respectivement à
condition,condition1etcondition2.
Résultat d'exécution
-
Succès :
Des descriptions détaillées des paramètres renvoyés sont disponibles sur la page produit de l'API correspondante. Pour les opérations spécifiques, consultez la documentation de référence.
L'exemple ci-dessous illustre un appel d'API réussi, renvoyant les statistiques du nombre de dispositifs pour l'instance publique du 21 février 2021 jusqu'au moment de l'appel API.
ListAnalyticsDataResponse { headers: { date: 'Mon, 15 Mar 2021 10:40:58 GMT', 'content-type': 'application/json;charset=utf-8', 'content-length': '425', connection: 'keep-alive', 'access-control-allow-origin': '*', 'access-control-allow-methods': 'POST, GET, OPTIONS', 'access-control-allow-headers': 'X-Requested-With, X-Sequence, _aop_secret, _aop_signature', 'access-control-max-age': '172800', 'x-acs-request-id': 'F278FA13-11E6-42BC-9883-3566AC******' }, body: ListAnalyticsDataResponseBody { requestId: 'F278FA13-11E6-42BC-9883-3566AC******', success: true, data: ListAnalyticsDataResponseBodyData { hasNext: false, resultJson: '[{"statDate":"20210221","actDevCnt":2942,"onlineDevCntCompare":0.00,"livelyDevCntCompare":8.99,"livelyDevCnt":1527,"onlineDevRate":23.08,"crtDevCnt":169025,"livelyDevRate":51.90,"crtDevCntCompare":0.08,"onlineDevCnt":679,"actDevRate":1.74,"actDevCntCompare":4.55}]', pageNum: 1, pageSize: 100 } } } -
Échec :
Il est possible de comprendre la raison d'un échec d'appel en examinant le code d'erreur dans le résultat.
L'exemple ci-dessous montre un appel d'API ayant échoué en raison d'un paramètre de requête invalide,
__instance_idd__. Corrigez-le en__instance_id__et tentez à nouveau l'appel.