Integrasikan SDK untuk memanggil operasi OpenAPI melalui tiga langkah: impor SDK, atur kredensial akses, dan panggil API.
Persyaratan lingkungan
Node.js >= 8.x
Impor SDK
-
Masuk ke SDK Center, lalu pilih produk untuk API yang ingin Anda panggil, seperti Short Message Service (SMS).
-
Pada halaman Installation dan All Languages ke TypeScript. Kemudian, pada tab Quick Start, Anda dapat menemukan petunjuk instalasi SDK untuk Short Message Service (SMS).

Atur kredensial akses
Pemanggilan operasi OpenAPI memerlukan kredensial akses seperti AccessKey atau Security Token Service (STS) token. Simpan kredensial dalam variabel lingkungan untuk mencegah kebocoran. Untuk praktik terbaik, lihat Gunakan kredensial akses secara aman. Contoh berikut menggunakan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
Metode konfigurasi di Linux dan macOS
Konfigurasikan variabel lingkungan menggunakan perintah export
Variabel lingkungan sementara yang diatur menggunakan perintah export hanya berlaku untuk sesi saat ini dan akan dihapus ketika sesi berakhir. Untuk penyimpanan jangka panjang, tambahkan perintah export ke file konfigurasi startup sistem operasi Anda.
Konfigurasikan ID AccessKey dan tekan Enter.
# Ganti yourAccessKeyID dengan ID AccessKey Anda. export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyIDKonfigurasikan Rahasia AccessKey dan tekan Enter.
# Ganti yourAccessKeySecret dengan Rahasia AccessKey Anda. export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecretVerifikasi konfigurasi.
Jalankan perintah
echo $ALIBABA_CLOUD_ACCESS_KEY_ID. Jika perintah mengembalikan ID AccessKey yang benar, konfigurasi berhasil.
Metode konfigurasi di Windows
Gunakan antarmuka pengguna grafis (GUI)
Prosedur
Langkah-langkah berikut menjelaskan cara mengatur variabel lingkungan menggunakan GUI di Windows 10.
Di desktop Anda, klik kanan This PC dan pilih Properties > Advanced system settings > Environment Variables > New di bawah System variables atau User variables, lalu lengkapi konfigurasi.
Variabel
Nilai contoh
AccessKey ID
Nama variabel: ALIBABA_CLOUD_ACCESS_KEY_ID
Nilai variabel: yourAccessKeyID
AccessKey Secret
Nama variabel: ALIBABA_CLOUD_ACCESS_KEY_SECRET
Nilai variabel: yourAccessKeySecret
Uji konfigurasi
Klik Start (atau gunakan pintasan keyboard Win+R), klik Run, masukkan `cmd`, lalu klik OK (atau tekan Enter) untuk membuka command prompt. Jalankan perintah
echo %ALIBABA_CLOUD_ACCESS_KEY_ID%danecho %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Jika perintah mengembalikan AccessKey yang benar, konfigurasi berhasil.
Gunakan command prompt (CMD)
Prosedur
Buka command prompt sebagai administrator dan jalankan perintah berikut untuk menambahkan variabel lingkungan baru ke sistem.
setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /MParameter
/Mmenunjukkan variabel lingkungan sistem. Anda dapat menghilangkan parameter ini saat mengatur variabel lingkungan pengguna.Uji konfigurasi
Klik Start (atau gunakan pintasan keyboard Win+R), klik Run, masukkan `cmd`, lalu klik OK (atau tekan Enter) untuk membuka command prompt. Jalankan perintah
echo %ALIBABA_CLOUD_ACCESS_KEY_ID%danecho %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Jika perintah mengembalikan AccessKey yang benar, konfigurasi berhasil.
Menggunakan Windows PowerShell
Di PowerShell, Anda dapat mengatur variabel lingkungan baru yang berlaku untuk semua sesi baru:
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::User)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::User)Untuk mengatur variabel lingkungan bagi semua pengguna, Anda harus memiliki izin administratif:
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::Machine)Anda juga dapat mengatur variabel lingkungan sementara yang hanya berlaku untuk sesi saat ini:
$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "yourAccessKeyID"
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "yourAccessKeySecret"Di PowerShell, jalankan perintah Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID dan Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET. Jika perintah mengembalikan AccessKey yang benar, konfigurasi berhasil.
Gunakan SDK
Topik ini memberikan contoh cara memanggil operasi API atau SendMessageToGlobe dari Short Message Service (SMS). Untuk referensi API operasi atau SendMessageToGlobe, lihat atau SendMessageToGlobe.
1. Inisialisasi klien permintaan
Semua pemanggilan OpenAPI melewati klien permintaan. Contoh ini menginisialisasi klien dengan pasangan AccessKey. Untuk metode inisialisasi lainnya, lihat Kelola kredensial akses.
-
Objek klien, seperti instans Dysmsapi20180501 dan , bersifat thread-safe dan dapat digunakan di lingkungan multi-threaded tanpa perlu membuat instans terpisah untuk setiap thread.
-
Hindari pembuatan objek klien berulang dengan `new`. Gunakan pola singleton sehingga hanya ada satu instans klien per kredensial dan titik akhir selama siklus hidup aplikasi.
Contoh TypeScript
import Dysmsapi20180501, * as $Dysmsapi20180501 from '@alicloud/dysmsapi20180501';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import Util, * as $Util from '@alicloud/tea-util';
export default class Client {
static createClient(): Dysmsapi20180501 {
let config = new $OpenApi.Config({
// Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
});
// Untuk informasi lebih lanjut tentang endpoint, lihat https://api.alibabacloud.com/product/Dysmsapi.
config.endpoint = `dysmsapi.aliyuncs.com`;
return new Dysmsapi20180501(config);
}
}
Contoh Node.js
const Dysmsapi20180501 = require('@alicloud/dysmsapi20180501');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
const Tea = require('@alicloud/tea-typescript');
class Client {
static createClient() {
let config = new OpenApi.Config({
// Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
});
// Untuk informasi lebih lanjut tentang endpoint, lihat https://api.alibabacloud.com/product/Dysmsapi.
config.endpoint = `dysmsapi.aliyuncs.com`;
return new Dysmsapi20180501.default(config);
}
}
2. Buat objek permintaan
Teruskan parameter melalui objek permintaan SDK, bernama <Nama OpenAPI>Request (misalnya, SendSmsRequest). Untuk detail parameter, lihat referensi API: SendMessageToGlobe.
Jika API tidak memiliki parameter permintaan, lewati langkah ini. Misalnya, DescribeCdnSubList tidak memerlukan objek permintaan.
Contoh TypeScript
// Buat objek permintaan dan atur parameter input yang diperlukan
let sendMessageToGlobeRequest = new $Dysmsapi20180501.SendMessageToGlobeRequest({
// Harap ganti dengan nomor penerima sebenarnya.
to: "<YOUR_VALUE>",
// Harap ganti dengan konten SMS sebenarnya.
message: "<YOUR_VALUE>",
});
Contoh Node.js
// Buat objek permintaan dan atur parameter input yang diperlukan
let sendMessageToGlobeRequest = new Dysmsapi20180501.SendMessageToGlobeRequest({
// Harap ganti dengan nomor penerima sebenarnya.
to: '<YOUR_VALUE>',
// Harap ganti dengan konten SMS sebenarnya.
message: '<YOUR_VALUE>',
});
3. Kirim permintaan
Panggil fungsi <operationName>WithOptions milik klien, di mana <operationName> adalah nama API dalam format camel case. Fungsi ini menerima objek permintaan dan parameter runtime (timeout, proxy, dll.). Lihat Konfigurasi lanjutan.
Jika API tidak memiliki parameter permintaan, cukup teruskan opsi runtime. Misalnya, DescribeCdnSubList hanya memerlukan parameter runtime.
Contoh TypeScript
// Buat parameter runtime.
let runtime = new $Util.RuntimeOptions({ });
let client = Client.createClient();
// Kirim permintaan.
await client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);
Contoh Node.js
// Buat parameter runtime.
let runtime = new Util.RuntimeOptions({ });
let client = Client.createClient();
// Kirim permintaan.
await client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);
4. Tangani exception
SDK Node.js V2.0 melemparkan dua jenis exception:
-
UnretryableError: Dilemparkan setelah jumlah maksimum percobaan ulang habis, biasanya karena masalah jaringan. Ambil permintaan terakhir melalui
err.data.lastRequest. -
ResponseError: Menunjukkan error sisi server yang dikembalikan oleh API.
Lihat Penanganan exception.
Selalu tangani exception — sebarkan, catat log, atau pulihkan. Jangan pernah mengabaikannya secara diam-diam.
Klik untuk melihat contoh kode lengkap
Pengunggahan File dengan Operasi Lanjutan
Beberapa API (seperti image search dan Visual Intelligence) tidak menerima path file lokal secara langsung. Gunakan operasi Advance untuk mengunggah file melalui aliran. SDK menyimpan file tersebut sementara di bucket OSS di wilayah cn-shanghai, dan layanan membacanya dari sana. Contoh ini menggunakan operasi DetectBodyCount dari Visual Intelligence API.
File sementara yang disimpan di Alibaba Cloud OSS akan dihapus secara berkala.
-
Inisialisasi klien permintaan
Atur baik
regionIdmaupunendpointke wilayah yang sama.regionIdmenentukan lokasi penyimpanan file OSS sementara. Jika Anda menghilangkanregionId, ketidaksesuaian wilayah antara produk dan bucket OSS akan menyebabkan timeout.Contoh TypeScript
function createClient(): facebody20191230 { let config = new $OpenApi.Config({ // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur. accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur. accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], }); // Endpoint dan regionId harus untuk wilayah yang sama. config.regionId = 'cn-shanghai'; config.endpoint = 'facebody.cn-shanghai.aliyuncs.com'; return new facebody20191230(config); }Contoh Node.js
function createClient() { let config = new OpenApi.Config({ // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur. accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur. accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], }); // Endpoint dan regionId harus untuk wilayah yang sama. config.regionId = 'cn-shanghai'; config.endpoint = 'facebody.cn-shanghai.aliyuncs.com'; return new facebody20191230.default(config); } -
Buat objek permintaan
Buat objek
<Nama OpenAPI>AdvanceRequestuntuk meneruskan aliran file. Nama parameter untuk aliran file adalahImageURLObject.Contoh TypeScript
// Baca file sebagai aliran file. const filePath = '<FILE_PATH>'; // Ganti ini dengan path file sebenarnya. // Periksa apakah file ada. if (!fs.existsSync(filePath)) { console.error('File tidak ada:', filePath); return; } // Buat aliran dan dengarkan error aliran. const fileStream = fs.createReadStream(filePath).on('error', (err) => { console.error('Error aliran:', err); process.exit(1); }); let detectBodyCountAdvanceRequest = new $facebody20191230.DetectBodyCountAdvanceRequest({ imageURLObject: fileStream, });Contoh Node.js
// Baca file sebagai aliran file. const filePath = '<FILE_PATH>'; // Ganti ini dengan path file sebenarnya. // Periksa apakah file ada. if (!fs.existsSync(filePath)) { console.error('File tidak ada:', filePath); return; } // Buat aliran dan dengarkan error aliran. const fileStream = fs.createReadStream(filePath).on('error', (err) => { console.error('Error aliran:', err); process.exit(1); }); let detectBodyCountAdvanceRequest = new facebody20191230.DetectBodyCountAdvanceRequest({ imageURLObject: fileStream, }); -
Kirim permintaan
Panggil fungsi
<operationName>Advanceuntuk mengirim permintaan.Contoh TypeScript
// Konfigurasikan parameter runtime. let runtime = new $Util.RuntimeOptions({ }); let client = Client.createClient(); // Kirim permintaan. await client.detectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);Contoh Node.js
// Konfigurasikan parameter runtime. let runtime = new Util.RuntimeOptions({ }); let client = Client.createClient(); // Kirim permintaan. await client.detectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);
FAQ
-
Error "You are not authorized to perform this operation" saat memanggil API
-
Error "triggerUncaughtException Error: getaddrinfo ENOTFOUND" (masalah endpoint)
-
Error "Cannot read properties of undefined (reading 'getCredential')" atau "InvalidAccessKeyId.NotFound: code: 404"
Untuk error umum lainnya, lihat FAQ.