全部產品
Search
文件中心

Alibaba Cloud SDK:整合SDK

更新時間:Jun 12, 2025

在調用OpenAPI時,建議採用在專案中整合SDK的方式。使用SDK可以簡化開發流程,實現功能的快速整合,同時有效降低維護成本。本文將詳細介紹如何在專案中安裝SDK以及使用SDK開發。

環境要求

Node.js >= 8.x

安裝SDK

V1.0 Node.js SDK僅支援泛化調用(CommonRequest)。該調用方式簡化了API互動流程,只需整合@alicloud/pop-core依賴即可實現。您可以通過以下命令安裝SDK依賴:

npm install @alicloud/pop-core

使用SDK

V1.0 Node.js SDK在使用時,分為RPC風格調用和ROA風格調用兩種方式。這兩種方式在使用上存在一些細微的差異,本文將逐步為您詳細說明。在樣本中,RPC風格將以調用ECSDescribeInstances介面為例,ROA風格將以調用Container ServiceKubernetesDescribeClustersV1介面為例。

1. 初始化請求用戶端

所有的OpenAPI均通過@alicloud/pop-core提供的RPCClient或ROAClient發起調用,因此在調用OpenAPI之前,需要先進行用戶端初始化。這裡以使用AK初始化方式為例,更多用戶端初始化方式請參見通過STS Token初始化用戶端

說明

樣本採用讀取環境變數的方式擷取憑證,運行代碼前需配置環境變數ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請參見在Linux、macOS和Windows系統配置環境變數

RPC Client

// RPC Client初始化方式
const Core = require('@alicloud/pop-core');
var client = new Core({
  // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。
  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
  // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
  accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
  // 網域名稱,格式:http(s)://雲產品endpoint,建議使用https。如ECS:http://ecs-cn-hangzhou.aliyuncs.com
  endpoint: 'https://ecs.cn-hangzhou.aliyuncs.com',
  // 雲產品API版本,如ECS:2014-05-26
  apiVersion: '2014-05-26'
});

ROA Client

// ROA Client初始化方式
var ROAClient = require('@alicloud/pop-core').ROAClient;
var client = new ROAClient({
  // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。
  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
  // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
  accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
  // 網域名稱,格式:http(s)://雲產品endpoint,建議使用https。如ECS:http://cs.cn-chengdu.aliyuncs.com
  endpoint: 'https://cs.cn-chengdu.aliyuncs.com',
  // 雲產品API版本,如ECS:2014-05-26
  apiVersion: '2015-12-15'
});

2. 構造發起請求所需參數

發起請求時所需三個參數,分別為OpenAPI名稱、請求參數對象、運行時參數對象。

說明

不支援傳本地檔案,若存在上傳本地檔案的情境,請使用V2.0 SDK。

RPC調用參數

// OpenAPI名稱
var action = 'DescribeInstances'
// 請求參數
var params = {
  "RegionId": "cn-hangzhou",
  "InstanceIds": "[\"i-bp67************\", \"i-7xva************\", … \"i-7xvc************\"]"
}
// 運行時參數
var requestOption = {
  method: 'POST',
  formatParams: false,
};

ROA調用參數

// 請求方式
const method = "GET"
// 路徑參數
const uriPattern = '/api/v1/clusters';
// 查詢參數
var queryParams = {
  "cluster_type": "Kubernetes",
  "name": "cluster-demo"
};
// 請求體,JSON格式字串。例如:`{"nodepool_info":{"name":"nodepool-test","type":"ess"}}`;
const body = "";
// 自訂要求標頭
const headers = {
  "Content-Type": "application/json"
};
// 運行時參數
const options = {
  timeout: 3000, // default 3000 ms
};

3. 發起請求

通過步驟1建立的請求用戶端調用request介面發起請求,該介面的參數為步驟2構造的參數。

RPC調用

// 發起請求
client.request(action, params, requestOption).then((result) => {
  console.log(JSON.stringify(result));
}, (ex) => {
  console.log(ex);
})

ROA調用

// 發起請求
roaClient.request(method, uriPattern, queryParams, body, headers, options)
  .then((response) => {
    console.log('ROA Response:', response);
  })
  .catch((error) => {
    console.error('ROA Error:', error);
  });

4. 異常處理

當介面返回結果的Code預設不為200OKSuccesssuccess中的任意一個時,則拋出異常。SDK支援自訂Code,可以靈活地控製程序在遇到異常時的處理方式。具體資訊請參見異常處理

完整範例程式碼

RPC調用

// RPC Client初始化方式
const Core = require('@alicloud/pop-core');

var client = new Core({
  // Please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set.
  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
  accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
  // 網域名稱,格式:http(s)://雲產品endpoint,建議使用https。如ECS:http://ecs-cn-hangzhou.aliyuncs.com
  endpoint: 'https://ecs.cn-hangzhou.aliyuncs.com',
  // 雲產品API版本,如ECS:2014-05-26
  apiVersion: '2014-05-26'
});

// OpenAPI名稱
var action = 'DescribeInstances'

// 請求參數
var params = {
  "RegionId": "cn-hangzhou",
  "InstanceIds": "[\"i-bp67acfmxazb4p****\", \"i-bp67acfmxazb4p****\", … \"i-bp67acfmxazb4p****\"]"
}

// 運行時參數
var requestOption = {
  method: 'POST',
  formatParams: false,
};

// 發起請求
client.request(action, params, requestOption).then((result) => {
  console.log(JSON.stringify(result));
}, (ex) => {
  console.log(ex);
})

ROA調用

const ROAClient = require('@alicloud/pop-core').ROAClient;

// ROA Client初始化方式
var ROAClient = require('@alicloud/pop-core').ROAClient;
var client = new ROAClient({
  // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。
  accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
  // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
  accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
  // 網域名稱,格式:http(s)://雲產品endpoint,建議使用https。如ECS:http://cs.cn-chengdu.aliyuncs.com
  endpoint: 'https://cs.cn-chengdu.aliyuncs.com',
  // 雲產品API版本,如ECS:2014-05-26
  apiVersion: '2015-12-15'
});

// 請求方式
const method = "GET"
// 路徑參數
const uriPattern = '/api/v1/clusters';
// 查詢參數
var queryParams = {
  "cluster_type": "Kubernetes",
  "name": "cluster-demo"
};
// 請求體,JSON格式字串。例如:`{"nodepool_info":{"name":"nodepool-test","type":"ess"}}`;
const body = "";
// 自訂要求標頭
const headers = {
  "Content-Type": "application/json"
};
// 運行時參數
const options = {
  timeout: 3000, // default 3000 ms
};

// 發起請求
roaClient.request(method, uriPattern, queryParams, body, headers, options)
  .then((response) => {
    console.log('ROA Response:', response);
  })
  .catch((error) => {
    console.error('ROA Error:', error);
  });

相關文檔