Integrasikan Alibaba Cloud SDK ke dalam proyek Go Anda untuk memanggil operasi OpenAPI. Proses ini mencakup tiga langkah: impor SDK, atur kredensial akses, dan panggil API.
Prasyarat
-
Go 1.10 atau yang lebih baru.
Impor SDK
-
Masuk ke SDK Center dan pilih produk untuk API yang ingin Anda panggil, seperti Short Message Service (SMS).
-
Pada halaman Installation , dan untuk All Languages, pilih Go. Kemudian, pada tab Quick Start, Anda dapat menemukan metode instalasi SDK untuk Short Message Service (SMS).

Atur kredensial akses
Panggilan Alibaba Cloud OpenAPI memerlukan kredensial akses seperti AccessKey atau Security Token Service (STS) token. Simpan kredensial dalam variabel lingkungan untuk mencegah kebocoran. Praktik keamanan terbaik dijelaskan dalam Gunakan kredensial akses secara aman. Contoh berikut menggunakan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET:
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. Variabel tersebut akan dihapus ketika sesi berakhir. Untuk penyimpanan jangka panjang (LTR), 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.
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.
Variable
Example value
AccessKey ID
Variable name: ALIBABA_CLOUD_ACCESS_KEY_ID
Variable value: yourAccessKeyID
AccessKey Secret
Variable name: ALIBABA_CLOUD_ACCESS_KEY_SECRET
Variable value: 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
Contoh berikut memanggil API SendMessageToGlobe dari Short Message Service (SMS). Referensi API SendMessageToGlobe: SendMessageToGlobe.
1. Inisialisasi klien permintaan
Semua panggilan OpenAPI SDK V2.0 dilakukan melalui klien permintaan. Contoh ini menginisialisasi klien dengan AccessKey. Metode inisialisasi lainnya dijelaskan dalam Kelola kredensial akses.
-
Instans klien bersifat thread-safe. Anda tidak perlu instans terpisah untuk setiap thread.
-
Hindari pembuatan objek klien berulang — hal ini membuang sumber daya dan menurunkan performa. Gunakan pola singleton untuk memastikan satu klien per pasangan kredensial dan titik akhir sepanjang siklus hidup aplikasi.
import (
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
dysmsapi20180501 "github.com/alibabacloud-go/dysmsapi-20180501/v2/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"os"
)
func CreateClient () (_result *dysmsapi20180501.Client, _err error) {
config := &openapi.Config{
// Wajib, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur.
AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
// Wajib, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur.
AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
}
config.Endpoint = tea.String("dysmsapi.aliyuncs.com")
_result = &dysmsapi20180501.Client{}
_result, _err = dysmsapi20180501.NewClient(config)
return _result, _err
}
2. Buat instans struct Request
Teruskan parameter API melalui struct `Request` SDK, bernama <Nama OpenAPI>Request (misalnya, `SendSmsRequest` untuk API `SendSms`). Detail parameter: SendMessageToGlobe.
API tanpa parameter permintaan (seperti DescribeCdnSubList) tidak memerlukan objek permintaan.
// Buat objek permintaan dan atur parameter input yang diperlukan
sendMessageToGlobeRequest := &dysmsapi20180501.SendMessageToGlobeRequest{
// Harap ganti dengan nomor penerima yang sebenarnya.
To: tea.String("<YOUR_VALUE>"),
// Harap ganti dengan konten SMS yang sebenarnya.
Message: tea.String("<YOUR_VALUE>"),
}
3. Kirim permintaan
Panggil OpenAPI menggunakan fungsi <NamaAPI>WithOptions, yang menerima pointer ke struct Request API dan pointer ke struct opsi runtime. Opsi runtime mengontrol timeout, proxy, dan perilaku permintaan lainnya. Konfigurasi lanjutan.
Untuk API tanpa parameter permintaan (seperti DescribeCdnSubList), cukup teruskan opsi runtime.
// Anda perlu menambahkan util "github.com/alibabacloud-go/tea-utils/v2/service" ke impor.
func _main() (_result *dysmsapi20180501.SendMessageToGlobeResponse, _err error) {
client, _err := CreateClient()
if _err != nil {
return nil, _err
}
// Buat objek permintaan dan atur parameter input yang diperlukan
sendMessageToGlobeRequest := &dysmsapi20180501.SendMessageToGlobeRequest{
// Harap ganti dengan nomor penerima yang sebenarnya.
To: tea.String("<YOUR_VALUE>"),
// Harap ganti dengan konten SMS yang sebenarnya.
Message: tea.String("<YOUR_VALUE>"),
}
runtime := &util.RuntimeOptions{}
// Untuk menjalankan kode, salin dan cetak nilai kembali API.
response, _err := client.SendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime)
if _err != nil {
return nil, _err
}
return response, _err
}
4. Tangani exception
SDK Go V2.0 mengkategorikan exception menjadi dua jenis utama: error dan SDKError.
-
error: Error non-bisnis, seperti error validasi akibat modifikasi file sumber SDK atau error parsing.
-
SDKError: Error yang terkait bisnis.
Panduan penanganan exception secara detail tersedia di Tangani exception.
Selalu tangani exception dengan menyebarkannya, mencatatnya, atau memulihkannya untuk memastikan stabilitas sistem.
Klik untuk melihat contoh kode lengkap
Skenario khusus: Konfigurasikan API Advance untuk unggah file
Beberapa produk cloud (seperti Image Search dan Visual Intelligence API) memerlukan API Advance untuk unggah file lokal. API ini menerima aliran file, menyimpan file tersebut sementara di Alibaba Cloud OSS (wilayah default: cn-shanghai), lalu memprosesnya. Contoh ini menggunakan API DetectBodyCount dari Visual Intelligence API.
File sementara yang disimpan di Alibaba Cloud OSS dihapus secara berkala.
-
1. Inisialisasi klien permintaan
Atur baik
RegionIdmaupunEndpoint.RegionIdmenentukan wilayah OSS untuk penyimpanan file sementara. MengabaikanRegionIddapat menyebabkan timeout jika produk dan OSS berada di wilayah berbeda.import ( "os" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" facebody20191230 "github.com/alibabacloud-go/facebody-20191230/v5/client" "github.com/alibabacloud-go/tea/tea" ) func CreateClient() (_result *facebody20191230.Client, _err error) { config := &openapi.Config{ // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID diatur. AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")), // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET diatur. AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")), } // Titik akhir dan regionId harus diatur ke wilayah yang sama. config.RegionId = tea.String("cn-shanghai") config.Endpoint = tea.String("facebody.cn-shanghai.aliyuncs.com") _result, _err = facebody20191230.NewClient(config) return _result, _err } -
Buat instans struct AdvanceRequest
Gunakan struct AdvanceRequest (bernama
<NamaAPI>AdvanceRequest) untuk meneruskan aliran file. Parameter aliran file bertipeio.Reader.// Ganti dengan path file. filePath := `<FILE_PATH>` // Buka file dan buat aliran. file, err := os.Open(filePath) if err != nil { return fmt.Errorf("Gagal membuka file: %v", err) } defer file.Close() // Tutup file. // Buat instans struct AdvanceRequest. detectBodyCountAdvanceRequest := &facebody20191230.DetectBodyCountAdvanceRequest{ ImageURLObject: file, } -
Kirim permintaan
Panggil
<NamaAPI>Advancedengan pointer ke struct AdvanceRequest.// Anda perlu menambahkan util "github.com/alibabacloud-go/tea-utils/v2/service" ke impor. func _main() (response *facebody20191230.DetectBodyCountResponse, _err error) { client, _err := CreateClient() if _err != nil { return nil, _err } // Ganti dengan path file. filePath := `<FILE_PATH>` // Buka file dan buat aliran. file, err := os.Open(filePath) if err != nil { return nil, fmt.Errorf("Gagal membuka file: %v", err) } defer file.Close() // Tutup file. // Buat objek permintaan. detectBodyCountAdvanceRequest := &facebody20191230.DetectBodyCountAdvanceRequest{ ImageURLObject: file, } runtime := &util.RuntimeOptions{} // Kirim permintaan. response, _err = client.DetectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime) if _err != nil { return nil, _err } return response, nil }
FAQ
-
Pesan error "You are not authorized to perform this operation" dikembalikan saat saya memanggil OpenAPI.
-
Pesan error "SDKError: Message: Post "https://ecs-cn-XX.aliyuncs.com": dial tcp: lookup ecs-cn-XX.aliyuncs.com: no such host" dikembalikan saat saya memanggil OpenAPI.
-
Pesan error "SDKError: StatusCode: 404 Code: InvalidAccessKeyId.NotFound Message: code: 404, Specified access key is not found." dikembalikan saat saya memanggil OpenAPI.
Error SDK umum lainnya dan solusinya: FAQ.