Bir OpenAPI işlemi çağırırken SDK'yı projenize entegre etmenizi öneririz. SDK kullanımı geliştirme sürecini basitleştirir, özelliklerin hızlı entegrasyonunu sağlar ve bakım maliyetlerini etkili bir şekilde azaltır. Bir Alibaba Cloud SDK entegrasyonu üç ana adımdan oluşur: Alibaba Cloud SDK'sını içe aktarma, erişim kimlik bilgilerini ayarlama ve SDK'yı kullanma. Bu konuda SDK entegrasyon süreci ayrıntılı olarak açıklanmaktadır.
Ortam gereksinimleri
Node.js >= 8.x
SDK'yı İçe Aktarma
SDK Merkezi adresine gidin ve çağırmak istediğiniz API'nin ürününü seçin; örneğin Short Message Service (SMS).
Installation sayfasında ve All Languages seçeneğini TypeScript olarak belirleyin. Ardından, Quick Start sekmesinde Short Message Service (SMS) için SDK kurulum talimatlarını bulabilirsiniz.

Erişim Kimlik Bilgilerini Ayarlama
OpenAPI işlemlerini çağırmak için AccessKey veya Security Token Service (STS) token gibi erişim kimlik bilgileri gerekir. Kimlik bilgilerinin sızmasını önlemek amacıyla bunları ortam değişkenlerinde saklayın. En iyi uygulamalar için bkz. Erişim kimlik bilgilerini güvenli şekilde kullanma. Aşağıdaki örneklerde ALIBABA_CLOUD_ACCESS_KEY_ID ve ALIBABA_CLOUD_ACCESS_KEY_SECRET ortam değişkenleri kullanılmaktadır.
Linux ve macOS'ta yapılandırma yöntemi
Aşağıdaki örneklerde değişken adı olarak ALIBABA_CLOUD_ACCESS_KEY_ID ve ALIBABA_CLOUD_ACCESS_KEY_SECRET kullanılmıştır. Gerekirse bu adları kendi tercih ettiğiniz isimlerle değiştirin; örneğin OSS_ACCESS_KEY_ID ve OSS_ACCESS_KEY_SECRET.
Ortam değişkenlerini ayarlamak için aşağıdaki export komutlarını çalıştırın:
export ile ayarlanan değişkenler geçicidir ve yalnızca geçerli oturum için geçerlidir. Kalıcılık sağlamak üzere export komutunu kabuk başlangıç dosyanıza (örneğin ~/.bashrc veya ~/.zshrc) ekleyin.
-
AccessKey ID değerini ayarlayın:
# Replace yourAccessKeyID with your AccessKey ID. export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID -
AccessKey secret değerini ayarlayın:
# Replace yourAccessKeySecret with your AccessKey secret. export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret -
Yapılandırmayı doğrulayın.
echo $ALIBABA_CLOUD_ACCESS_KEY_IDkomutunu çalıştırın. Doğru değer döndürülürse yapılandırma başarılı olmuştur.
Windows'ta yapılandırma yöntemi
Grafiksel kullanıcı arayüzünü (GUI) kullanma
-
Yordam
Aşağıdaki adımlarda Windows 10'da GUI kullanarak ortam değişkenlerinin nasıl ayarlanacağı açıklanmaktadır.
Masaüstünüzde This PC öğesine sağ tıklayın ve Properties > Advanced system settings > Environment Variables > New seçeneklerini izleyin (System variables veya User variables altında). Ardından yapılandırmayı tamamlayın.
Değişken
Örnek değer
AccessKey ID
Değişken adı: ALIBABA_CLOUD_ACCESS_KEY_ID
Değişken değeri: yourAccessKeyID
AccessKey secret
Değişken adı: ALIBABA_CLOUD_ACCESS_KEY_SECRET
Değişken değeri: yourAccessKeySecret
-
Yapılandırmayı test edin
Start menüsüne tıklayın (veya Win+R klavye kısayolunu kullanın), Run seçeneğine tıklayın,
cmdyazın ve komut istemini açmak için OK düğmesine tıklayın (veya Enter tuşuna basın).echo %ALIBABA_CLOUD_ACCESS_KEY_ID%veecho %ALIBABA_CLOUD_ACCESS_KEY_SECRET%komutlarını çalıştırın. Komutlar doğru AccessKey değerlerini döndürürse yapılandırma başarılı olmuştur.
Komut istemini (CMD) kullanma
-
Yordam
Komut istemini yönetici olarak açın ve sisteme yeni ortam değişkenleri eklemek için aşağıdaki komutları çalıştırın.
setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /M/Mparametresi bir sistem ortam değişkenini belirtir. Kullanıcı ortam değişkeni ayarlarken bu parametreyi atlayabilirsiniz. -
Yapılandırmayı test edin
Start menüsüne tıklayın (veya Win+R klavye kısayolunu kullanın), Run seçeneğine tıklayın,
cmdyazın ve komut istemini açmak için OK düğmesine tıklayın (veya Enter tuşuna basın).echo %ALIBABA_CLOUD_ACCESS_KEY_ID%veecho %ALIBABA_CLOUD_ACCESS_KEY_SECRET%komutlarını çalıştırın. Komutlar doğru AccessKey değerlerini döndürürse yapılandırma başarılı olmuştur.
Windows PowerShell'i kullanma
PowerShell'de tüm yeni oturumlarda geçerli olacak yeni ortam değişkenleri ayarlayabilirsiniz:
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::User)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::User)
Tüm kullanıcılar için ortam değişkenleri ayarlamak üzere yönetici izinlerine sahip olmanız gerekir:
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::Machine)
Yalnızca geçerli oturum için geçerli olacak geçici ortam değişkenleri ayarlayabilirsiniz:
$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "yourAccessKeyID"
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "yourAccessKeySecret"
PowerShell'de Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID ve Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET komutlarını çalıştırın. Komutlar doğru AccessKey değerlerini döndürürse yapılandırma başarılı olmuştur.
SDK'yı Kullanma
Bu konuda Short Message Service (SMS) hizmetinin veya SendMessageToGlobe API işleminin nasıl çağrılacağına ilişkin bir örnek sunulmaktadır. veya SendMessageToGlobe API işlemine ilişkin API referansı için bkz. veya SendMessageToGlobe.
1. İstek istemcisini başlatma
Tüm OpenAPI çağrıları bir istek istemcisi üzerinden gerçekleşir. Bu örnekte bir istemci AccessKey çifti kullanılarak başlatılır. Diğer başlatma yöntemleri için bkz. Erişim kimlik bilgilerini yönetme.
Dysmsapi20180501 ve örnekleri gibi istemci nesneleri iş parçacığı açısından güvenlidir ve çok iş parçacıklı ortamlarda her iş parçacığı için ayrı bir örnek oluşturmadan kullanılabilir.
İstemci nesnelerini
newile tekrar tekrar oluşturmayın. Uygulama yaşam döngüsü boyunca kimlik bilgisi ve uç nokta başına yalnızca bir istemci örneği bulunacak şekilde singleton tasarım desenini kullanın.
TypeScript örneği
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({
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
});
// For more information about the endpoint, see https://api.alibabacloud.com/product/Dysmsapi.
config.endpoint = `dysmsapi.aliyuncs.com`;
return new Dysmsapi20180501(config);
}
}
Node.js örneği
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({
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
});
// For more information about the endpoint, see https://api.alibabacloud.com/product/Dysmsapi.
config.endpoint = `dysmsapi.aliyuncs.com`;
return new Dysmsapi20180501.default(config);
}
}
2. İstek nesnesini oluşturma
Parametreleri SDK istek nesnesi aracılığıyla iletin; bu nesne <OpenAPI Adı>Request şeklinde adlandırılır (örneğin SendSmsRequest). Parametre ayrıntıları için API referansına bakın: SendMessageToGlobe.
Bir API'nin istek parametresi yoksa bu adımı atlayın. Örneğin, DescribeCdnSubList işlemi için istek nesnesi gerekmez.
TypeScript örneği
// Create request object and set required input parameters
let sendMessageToGlobeRequest = new $Dysmsapi20180501.SendMessageToGlobeRequest({
// Please replace with the actual recipient number.
to: "<YOUR_VALUE>",
// Please replace with the actual SMS content.
message: "<YOUR_VALUE>",
});
Node.js örneği
// Create request object and set required input parameters
let sendMessageToGlobeRequest = new Dysmsapi20180501.SendMessageToGlobeRequest({
// Please replace with the actual recipient number.
to: '<YOUR_VALUE>',
// Please replace with the actual SMS content.
message: '<YOUR_VALUE>',
});
3. İsteği gönderme
İstemcinin <operationName>WithOptions işlevini çağırın; burada <operationName> API adının camel case biçimidir. Bu işlev bir istek nesnesi ve çalışma zamanı parametrelerini (zaman aşımı, proxy vb.) alır. Bkz. Gelişmiş yapılandırmalar.
Bir API'nin istek parametresi yoksa yalnızca çalışma zamanı seçeneklerini iletin. Örneğin, DescribeCdnSubList işlemi için yalnızca çalışma zamanı parametreleri gerekir.
TypeScript örneği
// Create runtime parameters.
let runtime = new $Util.RuntimeOptions({ });
let client = Client.createClient();
// Send a request.
await client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);
Node.js örneği
// Create runtime parameters.
let runtime = new Util.RuntimeOptions({ });
let client = Client.createClient();
// Send a request.
await client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);
4. Özel durumları işleme
V2.0 Node.js SDK iki tür özel durum oluşturur:
UnretryableError: Genellikle ağ sorunlarından kaynaklanan maksimum yeniden deneme sayısı aşıldığında oluşturulur. Son isteği
err.data.lastRequestüzerinden alabilirsiniz.ResponseError: API tarafından döndürülen sunucu tarafı hatasını belirtir.
Bkz. Özel durum işleme.
Özel durumları her zaman işleyin — yaygınlaştırın, günlüğe kaydedin veya kurtarma sağlayın. Asla sessizce görmezden gelmeyin.
Tam kod örneğini görüntülemek için tıklayın
Advance işlemleriyle dosya yükleme
Bazı API'ler (görüntü arama ve Visual Intelligence gibi) yerel dosya yollarını doğrudan kabul etmez. Dosyaları bir akış üzerinden yüklemek için Advance işlemini kullanın. SDK, dosyayı cn-shanghai bölgesindeki bir OSS paketinde geçici olarak depolar ve hizmet buradan okur. Bu örnekte Visual Intelligence API'sinin DetectBodyCount işlemi kullanılmaktadır.
Alibaba Cloud OSS'de depolanan geçici dosyalar periyodik olarak temizlenir.
-
İstek istemcisini başlatma
Hem
regionIdhem deendpointdeğerlerini aynı bölgeye ayarlayın.regionIddeğeri geçici OSS dosyasının depolandığı yeri belirler.regionIddeğerini atlarsanız ürün ile OSS paketi arasında bir bölge uyumsuzluğu meydana gelir ve bu da zaman aşımlarına neden olur.TypeScript örneği
function createClient(): facebody20191230 { let config = new $OpenApi.Config({ // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set. accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set. accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], }); // The endpoint and regionId must be for the same region. config.regionId = 'cn-shanghai'; config.endpoint = 'facebody.cn-shanghai.aliyuncs.com'; return new facebody20191230(config); }Node.js örneği
function createClient() { let config = new OpenApi.Config({ // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set. accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set. accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], }); // The endpoint and regionId must be for the same region. config.regionId = 'cn-shanghai'; config.endpoint = 'facebody.cn-shanghai.aliyuncs.com'; return new facebody20191230.default(config); } -
İstek nesnesini oluşturma
Dosya akışını iletmek için bir <OpenAPIAdı>AdvanceRequest nesnesi oluşturun. Dosya akışı için parametre adı
ImageURLObjectşeklindedir.TypeScript örneği
// Read the file as a file stream. const filePath = '<FILE_PATH>'; // Replace this with the actual file path. // Check if the file exists. if (!fs.existsSync(filePath)) { console.error('File does not exist:', filePath); return; } // Create a stream and listen for stream errors. const fileStream = fs.createReadStream(filePath).on('error', (err) => { console.error('Stream error:', err); process.exit(1); }); let detectBodyCountAdvanceRequest = new $facebody20191230.DetectBodyCountAdvanceRequest({ imageURLObject: fileStream, });Node.js örneği
// Read the file as a file stream. const filePath = '<FILE_PATH>'; // Replace this with the actual file path. // Check if the file exists. if (!fs.existsSync(filePath)) { console.error('File does not exist:', filePath); return; } // Create a stream and listen for stream errors. const fileStream = fs.createReadStream(filePath).on('error', (err) => { console.error('Stream error:', err); process.exit(1); }); let detectBodyCountAdvanceRequest = new facebody20191230.DetectBodyCountAdvanceRequest({ imageURLObject: fileStream, }); -
İsteği gönderme
İsteği göndermek için <operationName>Advance işlevini çağırın.
TypeScript örneği
// Configure runtime parameters. let runtime = new $Util.RuntimeOptions({ }); let client = Client.createClient(); // Send the request. await client.detectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);Node.js örneği
// Configure runtime parameters. let runtime = new Util.RuntimeOptions({ }); let client = Client.createClient(); // Send the request. await client.detectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);
SSS
-
Bir API çağrılırken "You are not authorized to perform this operation" hatası
-
"triggerUncaughtException Error: getaddrinfo ENOTFOUND" hatası (uç nokta sorunu)
-
"Cannot read properties of undefined (reading 'getCredential')" veya "InvalidAccessKeyId.NotFound: code: 404" hatası
Diğer yaygın hatalar için bkz. SSS.