Le SDK Java fourni par Alibaba Cloud simplifie l'appel des API de DataService Studio et permet de récupérer facilement des données spécifiques. Intégrez le SDK à votre projet via des dépendances Maven ou en téléchargeant le package d'installation pour une configuration locale. Cette rubrique explique comment utiliser le SDK Java pour appeler l'API des métriques prédéfinies, en détaillant la méthode et en fournissant un exemple.
Prérequis
Pour appeler l'API des métriques prédéfinies, assurez-vous que le produit et le périphérique sont créés et que la sauvegarde des données est terminée. Pour obtenir des instructions détaillées, consultez Métriques prédéfinies (API).
Pour appeler l'API de données produit ou personnaliser une API de service, vérifiez que l'API correspondante a été créée. Pour plus de détails, reportez-vous aux rubriques API de données produit et Personnalisation de l'API de service.
Pour plus d'informations, consultez la section Gestion et utilisation.
Installer le SDK
-
Configurez un environnement de développement Java.
Téléchargez l'environnement depuis le site officiel de Java et suivez les instructions d'installation.
-
Installez le SDK IoT Platform pour Java.
Téléchargez Apache Maven depuis le site officiel.
-
Intégrez le SDK IoT Platform pour Java en ajoutant les dépendances Maven suivantes :
<dependency> <groupId>com.aliyun</groupId> <artifactId>tea-openapi</artifactId> <version>0.0.11</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>iot20180120</artifactId> <version>1.1.0</version> </dependency>
Envoyer une requête
L'extrait de code ci-dessous montre comment appeler les statistiques historiques du nombre de périphériques via 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.
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.
// Sample code for calling the DataService Studio API
import com.aliyun.iot20180120.Client;
import com.aliyun.iot20180120.models. * ;
import com.aliyun.teaopenapi.models.Config;
public class JavaDemo {
/**
* Initialize the client with AccessKey ID and AccessKey Secret
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
public static Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config();
config.setAccessKeyId(accessKeyId);
config.setAccessKeySecret(accessKeySecret);
// Set your access domain name
config.setEndpoint("iot.cn-shanghai.aliyuncs.com");
return new Client(config);
}
public static void main(String[] args_) throws Exception {
// Provide your AccessKey ID and AccessKey Secret
Client client = JavaDemo.createClient("LTAI****************", "*********"));
ListAnalyticsDataRequest request = new ListAnalyticsDataRequest();
// Specify your API Path
request.setApiPath("/iot-cn-npk1v******/system/query/hist_dev_cnt_stat");
// Indicate the instance ID where your API is located
request.setIotInstanceId("iot-cn-npk1v******");
// Set paging parameters: page number
request.setPageNum(1);
// Set paging parameters: page size
request.setPageSize(100);
List < ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition > conditions = new ArrayList < >();
// Define your business-related request parameters. For Condition configuration, refer to the description below.
ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition condition = new ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition();
condition.setFieldName("__instance_id__");
condition.setOperate("=");
condition.setValue("iot-public");
conditions.add(condition);
ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition condition1 = new ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition();
condition1.setFieldName("entityId");
condition1.setOperate("=");
condition1.setValue("all");
conditions.add(condition1);
ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition condition2 = new ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition();
condition2.setFieldName("statDate");
condition2.setOperate("=");
condition2.setValue("20210221");
conditions.add(condition2);
request.setCondition(conditions);
// Execute the API call and capture the response
ListAnalyticsDataResponse listAnalyticsDataResponse = client.listAnalyticsData(request);
// Output the response
System.out.println(JSON.toJSONString(listAnalyticsDataResponse));
}
}
-
Paramètres de requête système :
Nom
Type
Obligatoire
Valeur d'exemple
Description
accessKeyId
String
Oui
LTAI
Pour obtenir l'AccessKey ID et l'AccessKey Secret, connectez-vous à la console IoT Platform, placez le curseur sur la photo de profil du compte, puis cliquez sur Accesskey Management.
RemarqueSi vous utilisez un utilisateur RAM, attachez la stratégie d'autorisation AliyunIOTFullAccess pour activer la gestion des ressources IoT Platform. Sans cette étape, la connexion à IoT Platform peut échouer. Pour la méthode d'autorisation, reportez-vous à la section Accorder l'accès à IoT Platform aux utilisateurs RAM.
accessKeySecret
String
Oui
yourAccessKeySecret
Endpoint
String
Oui
iot.cn-shanghai.aliyuncs.com
Adresse du serveur API du service Alibaba Cloud. Assurez-vous que la région correspond à celle du produit IoT Platform.
Dans cet exemple, la région est Chine (Shanghai) (cn-shanghai).
apiPath
String
Oui
/iot-cn-npk1v/system/query/hist_dev_cnt_stat
Chemin d'opération de l'API. Dans la liste des API de DataService Studio, cliquez sur DataService Studio à côté de l'API pour accéder à sa page produit et trouver la valeur API Path. Pour plus de détails, consultez la section Gérer l'API.
iotInstanceId
String
Oui
iot-cn-npk1u
ID de l'instance hébergeant l'API.
pageNum
Integer
Conditionnel
1
Numéro de page pour la pagination.
pageSize
Integer
Conditionnel
100
Nombre d'entrées par page, avec un maximum de 100.
-
Paramètres de requête liés au métier :
Nom
Type
Obligatoire
Description
Code associé
fieldName
String
Oui
Nom du paramètre dans la requête.
condition.setFieldName("entityId");operate
String
Oui
Opérateur utilisé pour le paramètre. Les options disponibles sont :
=pour une correspondance de valeur exacte.BETWEENpour une plage de valeurs.INpour plusieurs valeurs possibles.!=pour exclure une valeur spécifique.
condition.setOperate("=");value
String
Non
Valeur à faire correspondre pour le paramètre.
ImportantCe paramètre est nécessaire sauf si l'opérateur est
BETWEEN.condition.setValue("all");betweenStart
String
Non
Valeur de début pour un paramètre de plage.
ImportantRequis lorsque l'opérateur est
BETWEEN.condition.setBetweenStart("0");betweenEnd
String
Non
Valeur de fin pour un paramètre de plage.
ImportantRequis lorsque l'opérateur est
BETWEEN.condition.setBetweenEnd("100");Chaque paramètre de requête est associé à une
conditionspécifique. Pour configurer ces conditions, consultez la page produit de l'API où vous pouvez afficher et définir le nombre souhaité decondition. Pour savoir comment accéder aux paramètres de requête de l'API, consultez la section Gérer l'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 de l'exécution
-
Succès :
Les 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 section Gestion et utilisation.
L'exemple ci-dessous illustre une réponse d'API réussie, incluant les statistiques sur le nombre de périphériques pour l'instance publique du 21 février 2021 jusqu'au moment de l'appel à l'API.
{ "body": { "data": { "hasNext": false, "pageNum": 1, "pageSize": 100, "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}]" }, "requestId": "6B78B8DB-EBDB-4451-BE30-893714******", "success": true }, "headers": { "access-control-allow-origin": "*", "date": "Mon, 15 Mar 2021 07:24:01 GMT", "content-length": "425", "access-control-max-age": "172800", "x-acs-request-id": "6B78B8DB-EBDB-4451-BE30-893714******", "access-control-allow-headers": "X-Requested-With, X-Sequence, _aop_secret, _aop_signature", "connection": "keep-alive", "content-type": "application/json;charset=utf-8", "access-control-allow-methods": "POST, GET, OPTIONS" } } -
Échec :
Examinez le code d'erreur présent dans le résultat pour comprendre la raison de l'échec.
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 réessayez la requête.