物聯網平臺提供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客戶端的HTTP請求配置、代理配置、超時機制、重試機制等配置方式,請參見阿里云升級版Node.js SDK使用指南。
發起調用
物聯網平臺云端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。
以下代碼中${iotInstanceId}
為實例ID值。您可在物聯網平臺控制臺的實例概覽頁面,查看當前實例的ID值。
若有ID值,必須傳入該ID值,否則調用API會失敗。
若無實例概覽頁面或ID值,則無需傳入ID值。您需刪除IotInstanceId相關的請求代碼,或傳入空值
""
,否則調用API會失敗。
實例的詳細說明,請參見實例概述。購買實例方法,請參見購買企業版實例。常見問題,請參見物聯網平臺實例相關問題。
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格式的返回結果。