物聯網平台提供TypeScript語言的雲端SDK供開發人員使用。本文介紹雲端Node.js SDK的安裝和配置,及使用Node.js SDK調用雲端API的樣本。
安裝SDK
安裝Node.js開發環境。
物聯網平台雲端升級版Node.js SDK基於Node.js環境構建,需要安裝Node.js 8.x及以上版本。
安裝SDK核心庫OpenAPI。
您可使用npm管理依賴庫,通過以下命令安裝依賴並寫入檔案package.json。
npm install @alicloud/openapi-client -S
安裝IoT Node.js SDK。
執行以下npm命令進行安裝,例如安裝3.0.8版本SDK。
npm install --save @alicloud/iot20180120@3.0.8
Node.js SDK源碼資訊,請參見alibabacloud-typescript-sdk。
初始化SDK
建立Config對象config,存放SDK初始化資訊(AccessKey ID、AccessKey Secret、地區ID等)。
建立Client對象執行個體client,通過
Iot(config)
方法,載入config中的SDK資訊,完成SDK用戶端初始化。
以華東2(上海)地區及其服務接入地址為例,初始代碼如下。實際情境設定中,需使用您的物聯網平台服務所在地區。
import Iot, * as $Iot from '@alicloud/iot20180120';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
let config = new $OpenApi.Config({ });
// 您的AccessKey ID。
config.accessKeyId = process.env.ACCESS_KEY_ID;
// 您的AccessKey Secret。
config.accessKeySecret = process.env.ACCESS_KEY_SECRET;
// 您的可用性區域ID。
config.regionId = "cn-shanghai";
let client = new Iot(config);
參數 | 說明 |
regionId | 您的物聯網平台服務的地區ID,用於拼接服務接入地址,格式為:iot.${RegionId}.aliyuncs.com。 您可在物聯網平台控制台左上方,查看當前服務所在地區。 地區ID的表達方法,請參見地區和可用性區域。 |
發起調用
物聯網平台雲端SDK為每個API封裝兩個類,分別命名為${API名稱}+"Request"
和${API名稱}+"Response"
,分別用於承載API的調用請求和調用結果。
調用步驟
已完成SDK用戶端初始化。具體內容,請參見初始化SDK。
建立對應API的調用請求,產生
${API名稱}+"Request"
類對象執行個體request。通過對象執行個體request,設定API所需的請求參數值。
建立
${API名稱}+"Response"
類的對象執行個體response承載響應結果:使用Client對象執行個體client的${API名稱}(request)
方法,擷取API對應request的響應結果,包含服務端響應的body和headers。通過對象執行個體response的body成員對象,使用
response.body.${返回參數的名稱}
方法,可擷取對應返回參數的值。例如:
response.body.success
用於擷取是否調用成功的標識,其中Success為API的通用返回參數。通用返回參數還包含RequestId、ErrorMessage和Code。使用
catch()
方法處理異常報錯。
物聯網平台雲端API,請參見API列表。有關request中請求參數說明,及response中返回參數說明,請參見對應API文檔。
本文以調用Pub介面發布訊息到Topic為例。請求參數資訊,請參見Pub。
try {
let client = Client.createClient("${accessKey}", "${accessKeySecret}");
let request = new $Iot.PubRequest({
// 物聯網平台執行個體ID。
iotInstanceId: "${iotInstanceId}",
// 產品ProductKey。
productKey: "${productKey}",
// 要發送的訊息主體,需通過Base64編碼。
messageContent: "eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=",
// 要接收訊息的裝置的自訂Topic。
topicFullName: "/${productKey}/${deviceName}/user/get",
// 指定訊息的發送方式,支援QoS0和QoS1。
qos: 0,
});
let response = await client.pub(request);
Console.log(Util.toJSONString($tea.toMap(response)));
} catch (error) {
Console.log(error.message);
}
完整程式碼範例
實際情境中,請參照上文的參數說明,替換對應參數值。
import Iot, * as $Iot from '@alicloud/iot20180120';
import Util from '@alicloud/tea-util';
import Env from '@alicloud/darabonba-env';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import Console from '@alicloud/tea-console';
import * as $tea from '@alicloud/tea-typescript';
export default class Client {
/**
* 使用AK&SK初始化帳號Client。
* @param accessKeyId
* @param accessKeySecret
* @param regionId
* @return Client
* @throws Exception
*/
static createClient(): Iot {
let config = new $OpenApi.Config({ });
// 您的AccessKey ID。
config.accessKeyId = process.env.ACCESS_KEY_ID;
// 您的AccessKey Secret
config.accessKeySecret = process.env.ACCESS_KEY_SECRET;
// 您的可用性區域ID。
config.regionId = "cn-shanghai";
return new Iot(config);
}
static async main(args: string[]): Promise<void> {
try {
let client = Client.createClient("${accessKey}", "${accessKeySecret}");
let request = new $Iot.PubRequest({
// 物聯網平台執行個體ID。
iotInstanceId: "${iotInstanceId}",
// 產品ProductKey。
productKey: "${productKey}",
// 要發送的訊息主體,hello world Base64 String。
messageContent: "eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=",
// 要接收訊息的裝置的自訂Topic。
topicFullName: "/${productKey}/${deviceName}/user/get",
// 指定訊息的發送方式,支援QoS0和QoS1。
qos: 0,
});
let response = await client.pub(request);
Console.log(response.body.success);
Console.log(response.body.requestId);
} catch (error) {
Console.log(error.message);
}
}
}
Client.main(process.argv.slice(2));
附錄:範例程式碼
前往物聯網平台雲端SDK樣本中心查看或下載API調用的範例程式碼。範例程式碼中包含Java、Python、PHP、Node.js、Go、C++和.NET等版本SDK樣本。
阿里雲OpenAPI開發人員門戶提供API線上調試工具。在API調試頁面,您可以快速檢索和體驗調用API。系統會根據您輸入的參數同步產生各語言SDK的程式碼範例。各語言SDK程式碼範例顯示在頁面右側SDK樣本頁簽下供您參考。在調用結果頁簽下,可查看API調用的真實請求URL和JSON格式的返回結果。