Node.js SDK調(diào)用示例
您可使用阿里云提供的Node.js SDK,來調(diào)用數(shù)據(jù)服務(wù)的API,從而更便捷地獲取指定數(shù)據(jù)。本文以調(diào)用預(yù)置指標(biāo)API為例,介紹Node.js SDK調(diào)用API的方法及示例。
前提條件
如果需要調(diào)用預(yù)置指標(biāo)API,需確保已創(chuàng)建產(chǎn)品和設(shè)備,并完成數(shù)據(jù)備份。具體操作,請參見預(yù)置指標(biāo)API。
如果需要調(diào)用產(chǎn)品數(shù)據(jù)API或自定義服務(wù)API,需確保已創(chuàng)建對(duì)應(yīng)API。具體操作,請參見產(chǎn)品數(shù)據(jù)API和自定義服務(wù)API。
更多信息,請參見管理與使用。
安裝SDK
- 登錄Node.js官方網(wǎng)站,按照說明安裝Node.js開發(fā)環(huán)境。
- 執(zhí)行以下命令,安裝阿里云OpenAPI SDK。
npm install @alicloud/openapi-client npm install @alicloud/iot20180120
發(fā)起調(diào)用
以下為調(diào)用數(shù)據(jù)服務(wù)下預(yù)置指標(biāo)API中歷史至今設(shè)備數(shù)量相關(guān)統(tǒng)計(jì)的示例代碼。您可參照參數(shù)說明,修改對(duì)應(yīng)代碼,調(diào)用指定的API。
單個(gè)阿里云賬號(hào)調(diào)用數(shù)據(jù)服務(wù)API的每秒請求數(shù)(QPS)最大限制為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;
// 創(chuàng)建客戶端
const config = new Config();
config.endpoint = "iot.cn-shanghai.aliyuncs.com";
config.accessKeyId = "LTAI4FyDFmKN************";
config.accessKeySecret = "WF3onkl8cq3cTyVW8n************";
config.regionId = "cn-shanghai";
async function main() {
const client = new IotClient.default(config);
// 創(chuàng)建請求對(duì)象
const listAnalyticsDataRequest = new ListAnalyticsDataRequest();
// 您的API Path
listAnalyticsDataRequest.apiPath = '/iot-cn-npk1v******/system/query/hist_dev_cnt_stat'
// 分頁參數(shù):頁號(hào)
listAnalyticsDataRequest.pageNum = 1;
// 分頁參數(shù):頁大小
listAnalyticsDataRequest.pageSize = 100;
// 您的API所在的實(shí)例id
listAnalyticsDataRequest.iotInstanceId = 'iot-cn-npk1v******'
//您的API業(yè)務(wù)相關(guān)的請求參數(shù)。Condition的配置說明,請參見下文的相關(guān)說明。
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();
系統(tǒng)請求參數(shù):
名稱
類型
是否必傳
示例值
描述
endpoint
String
是
iot.cn-shanghai.aliyuncs.com
阿里云服務(wù)的API服務(wù)端地址。其中,地域需與物聯(lián)網(wǎng)平臺(tái)產(chǎn)品地域保持一致。
本示例中,地域?yàn)槿A東2(cn-shanghai)。
accessKeyId
String
是
LTAI4FyDFmKN************
登錄物聯(lián)網(wǎng)平臺(tái)控制臺(tái),將鼠標(biāo)移至賬號(hào)頭像上,然后單擊AccessKey管理,獲取AccessKey ID和AccessKey Secret。
說明 如果使用RAM用戶,您需授予該RAM用戶管理物聯(lián)網(wǎng)平臺(tái)的權(quán)限(AliyunIOTFullAccess),否則將連接失敗。授權(quán)方法請參見授權(quán)RAM用戶訪問物聯(lián)網(wǎng)平臺(tái)。accessKeySecret
String
是
WF3onkl8cq3cTyVW8n************
regionId
String
是
cn-shanghai
地域代碼。具體內(nèi)容,請參見支持的地域。
apiPath
String
是
iot-cn-npk1u******
API路徑。在數(shù)據(jù)服務(wù)的API列表下,單擊API對(duì)應(yīng)的查看,進(jìn)入API詳情頁,可查看API Patch的值。更多信息,請參見管理與使用。
pageNum
Integer
開啟分頁時(shí)必傳
1
分頁的頁碼。
pageSize
Integer
開啟分頁時(shí)必傳
100
每頁顯示結(jié)果的條數(shù),最大值為100。
iotInstanceId
String
是
開啟分頁時(shí)必傳
業(yè)務(wù)相關(guān)的請求參數(shù):
名稱
類型
是否必傳
說明
相關(guān)代碼
fieldName
String
是
請求參數(shù)名稱。
condition.fieldName = '__instance_id__';
operate
String
是
請求參數(shù)對(duì)應(yīng)的操作符??蛇x:
=
:指定請求參數(shù)為特定值。BETWEEN
:指定請求參數(shù)為特定范圍。IN
:指定請求參數(shù)為多個(gè)值。!=
:指定請求參數(shù)不可為特定值。
condition.operate = '=';
value
String
否
請求參數(shù)的賦值。
重要當(dāng)操作符為非
BETWEEN
時(shí),該參數(shù)必傳。condition.value = 'iot-public';
betweenStart
String
否
請求參數(shù)表示范圍時(shí)的起始值。
重要當(dāng)操作符為
BETWEEN
時(shí),該參數(shù)必傳。condition.betweenStart = '0';
betweenEnd
String
否
請求參數(shù)表示范圍時(shí)的終止值。
重要當(dāng)操作符為
BETWEEN
時(shí),該參數(shù)必傳。condition.betweenEnd = '1000';
一個(gè)請求參數(shù)對(duì)應(yīng)一個(gè)
condition
。在API詳情頁,查看API的請求參數(shù),您可配置指定數(shù)量的condition
。關(guān)于如何查看API請求參數(shù)的信息,請參見管理API。本文示例代碼中,該API有3個(gè)請求參數(shù)__instance_id__、entityId、statDate分別對(duì)應(yīng)
condition
、condition 1
、condition 2
。
運(yùn)行結(jié)果
成功:
在對(duì)應(yīng)API的詳情頁,您可查看返回參數(shù)的詳細(xì)說明。具體操作,請參見管理與使用。
以下示例為調(diào)用API成功后的結(jié)果,即:從2021年2月21日起至調(diào)用API時(shí),公共實(shí)例下的設(shè)備數(shù)量相關(guān)統(tǒng)計(jì)情況。
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 } } }
失敗:
通過調(diào)用失敗結(jié)果中的錯(cuò)誤碼,您可了解失敗的原因。關(guān)于錯(cuò)誤碼更多信息,請參見錯(cuò)誤碼。
以下示例為調(diào)用API失敗后的結(jié)果,即:參數(shù)
__instance_idd__
為無效的請求參數(shù),將其更正為__instance_id__
后,重新發(fā)起調(diào)用。