全部产品
Search
文档中心

Alibaba Cloud SDK:Panggilan generik

更新时间:Jul 06, 2025

Alibaba Cloud SDK for Java V2.0 mendukung panggilan API generik. Topik ini menjelaskan cara melakukan panggilan generik menggunakan Alibaba Cloud SDK for Java V2.0.

Karakteristik

Ringan: Anda dapat menggunakan Alibaba Cloud SDK V2.0 untuk Go untuk memanggil operasi API hanya dengan menginstal pustaka inti dari Alibaba Cloud SDK, tanpa perlu menginstal SDK untuk setiap layanan.

Mudah digunakan: Anda cukup membuat parameter permintaan umum dan menggunakan klien umum untuk memulai permintaan. Respons akan dikembalikan dalam format umum.

Untuk informasi lebih lanjut, lihat Panggilan Generik dan Panggilan Spesifik.

Catatan penggunaan

Sebelum melakukan panggilan generik, disarankan untuk melihat metadata dari operasi API untuk mendapatkan gaya API, parameter permintaan, dan URL.

Instal pustaka inti Alibaba Cloud SDK V2.0 untuk Go

Jalankan perintah berikut di terminal Anda untuk menginstal pustaka inti Alibaba Cloud SDK V2.0 untuk Go:

go get github.com/alibabacloud-go/darabonba-openapi/v2/client

Panggil operasi API

Inisialisasi klien permintaan

Buat objek darabonba-openapi/v2/client untuk menginisialisasi klien permintaan, dan gunakan klien tersebut untuk memanggil operasi API. Saat menginisialisasi klien, Anda juga dapat menggunakan alat Credentials. Untuk informasi lebih lanjut tentang alat Credentials, lihat Kelola Kredensial Akses.

import (
	"fmt"
	"os"
	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
	"github.com/alibabacloud-go/tea/tea"
	"github.com/aliyun/credentials-go/credentials"
)

        // os.Getenv menunjukkan bahwa ID AccessKey dan rahasia AccessKey diperoleh dari variabel lingkungan.
	config := &openapi.Config{
	 	AccessKeyId:     tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
		AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
	}
	// Tentukan titik akhir layanan.
	config.Endpoint = tea.String("ecs-cn-hangzhou.aliyuncs.com")
	// Inisialisasi dan kembalikan klien.
	client, err := openapi.NewClient(config)
	if err != nil {
		panic(err)
	 }

	// Gunakan kredensial default untuk menginisialisasi klien. 
	// credentialClient, _err := credentials.NewCredential(nil)
	// if _err != nil {
	//	panic(_err)
	// }
	// config := &openapi.Config{
	//	Credential: credentialClient,
	// }
	// config.Endpoint = tea.String("ecs-cn-hangzhou.aliyuncs.com")
	// client, err := openapi.NewClient(config)
	// if err != nil {
	//	panic(_err)
	// }

Konfigurasikan informasi tentang operasi API

Gunakan openapi.Params untuk mengonfigurasi informasi dasar tentang operasi API, seperti gaya API, versi API, dan metode permintaan. Dalam contoh berikut, operasi DescribeInstanceTypeFamilies dipanggil.

        // Konfigurasikan informasi dasar tentang operasi API.
        params := &openapi.Params{
		// Tentukan parameter yang diperlukan seperti Action dan Version untuk operasi API.
		Action:      tea.String("DescribeInstanceTypeFamilies"), // Operasi API.
		Version:     tea.String("2014-05-26"), // Nomor versi operasi API.
		Protocol:    tea.String("HTTPS"), // Protokol permintaan. Nilai valid: HTTP dan HTTPS. Kami sarankan Anda menggunakan HTTPS. 
		Method:      tea.String("POST"), // Metode permintaan.
		AuthType:    tea.String("AK"), // Jenis autentikasi. Gunakan tipe default. Jika operasi API mendukung permintaan anonim, Anda dapat menentukan parameter Anonymous untuk memulai permintaan anonim. 
		Style:       tea.String("RPC"), // Gaya API, seperti pemanggilan prosedur jarak jauh (RPC) dan arsitektur berorientasi sumber daya (ROA). 
		Pathname:    tea.String("/"), // URL operasi API. Jalur default operasi bergaya RPC adalah /. Anda dapat memperoleh URL operasi bergaya ROA dari parameter data.path dalam metadata API. 
		ReqBodyType: tea.String("json"), // Tipe badan permintaan. Nilai valid: byte, json, dan formData. 
		BodyType:    tea.String("json"), // Format respons. Nilai valid: json. 
	}

Konfigurasikan parameter permintaan

Gunakan openapi.OpenApiRequest untuk mengonfigurasi parameter permintaan. Anda dapat melewati parameter permintaan dalam string kueri, badan, atau aliran. Pilih metode untuk melewati parameter permintaan berdasarkan metadata operasi API. Sebagai contoh, parameter permintaan RegionId dari operasi API DescribeInstanceTypeFamilies didefinisikan sebagai {"name":"RegionId","in":"query",...}} dalam metadata. "in":"query" menunjukkan bahwa parameter RegionId dilewatkan dalam string kueri.

Cara parameter dilewatkan

Deskripsi

Query

Jika metadata mendefinisikan "in":"query", lewatkan parameter dalam string kueri.

Body

Jika metadata mendefinisikan "in":"body'' atau "in": "formData", lewatkan parameter dalam badan permintaan. Jika Anda melewati parameter permintaan dalam badan permintaan, tentukan nilai untuk parameter reqBodyType berdasarkan tipe badan permintaan.

Stream

Jika Anda perlu mengunggah file, Anda dapat melewati aliran file dengan mengonfigurasi parameter Stream.

        // Skenario 1: Konfigurasikan string kueri.
	query := map[string]interface{}{
		"RegionId": tea.String("cn-hangzhou"),
	}
	// Buat permintaan dan konfigurasikan parameter yang diperlukan.
	request := &openapi.OpenApiRequest{
		Query: openapiutil.Query(query),
	}

	// Skenario 2: Konfigurasikan badan dan atur reqBodyType ke json.
	// reqBody := map[string]interface{}{
	// 	"param1": tea.String("value1"),
	//      "param2": tea.String("value2"),
	// }
	// // Buat permintaan API dan atur parameter yang diperlukan.
	// request := &openapi.OpenApiRequest{
	// 	Body: openapiutil.Query(reqBody),
	// }

	// Skenario 3: Konfigurasikan badan dan atur reqBodyType ke formData.
	// reqForm := map[string]interface{}{
	// 	"param1": tea.String("value1"),
	//      "param2": tea.String("value2"),
	// }
	// request := &openapi.OpenApiRequest{
	// 	// Ubah parameter formulir menjadi string yang dienkripsi URL.
	// 	Body: reqForm,
	// }

	// Skenario 4: Gunakan parameter Stream untuk melewati aliran file
	// request := &openapi.OpenApiRequest{
	// 	Stream: '<FILE_STREAM>', // Ganti <FILE_STREAM> dengan aliran file yang ingin Anda lewatkan.
	// }

Mulai permintaan

Gunakan client untuk memulai permintaan dengan memanggil fungsi CallApi. Saat memanggil operasi API, Anda dapat menentukan parameter runtime, seperti parameter timeout dan parameter proxy. Untuk informasi lebih lanjut, lihat Pengaturan Lanjutan.

        // Konfigurasikan opsi runtime.
	runtime := &util.RuntimeOptions{}
	// Abaikan kesalahan terkait sertifikat SSL.
        // runtime.IgnoreSSL = tea.Bool(true)
        // Konfigurasikan proxy menggunakan RuntimeOptions.
	// runtime.HttpProxy = tea.String("http://127.0.0.1:9898")
	// runtime.HttpsProxy = tea.String("http://user:password@127.0.0.1:8989")
	// runtime.NoProxy = tea.String("127.0.0.1,localhost")
	// Konfigurasikan periode timeout. Unit: milidetik.
	// runtime.ConnectTimeout = tea.Int(10000) // Atur periode timeout untuk permintaan koneksi menjadi 10 detik.
	// runtime.ReadTimeout = tea.Int(10000) // Atur periode timeout untuk permintaan baca menjadi 10 detik.
	// Panggil operasi API dan kembalikan respons.
	response, err := client.CallApi(params, request, runtime)
	if err != nil {
		panic(err)
	}
	// Responsnya bertipe MAP, yang berisi badan respons, header respons, dan kode status HTTP. 
	fmt.Println(response["body"])

Kode contoh

Contoh: Panggil operasi API bergaya RPC

Dalam contoh ini, operasi DescribeInstanceTypeFamilies dari Elastic Compute Service (ECS) dipanggil untuk menunjukkan cara melakukan panggilan generik suatu operasi.

package main

import (
	"fmt"
	"os"

	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
	openapiutil "github.com/alibabacloud-go/openapi-util/service"
	util "github.com/alibabacloud-go/tea-utils/v2/service"
	"github.com/alibabacloud-go/tea/tea"
)

func main() {
	// Dapatkan ID AccessKey dan rahasia AccessKey dari variabel lingkungan.
	config := &openapi.Config{
		AccessKeyId:     tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
		AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
	}
	// Tentukan titik akhir layanan.
	config.Endpoint = tea.String("ecs-cn-hangzhou.aliyuncs.com")
	// Inisialisasi dan kembalikan klien.
	client, err := openapi.NewClient(config)
	if err != nil {
		panic(err)
	}
	params := &openapi.Params{
		// Tentukan parameter yang diperlukan seperti Action dan Version untuk operasi API.
		Action:      tea.String("DescribeInstanceTypeFamilies"), // Operasi API.
		Version:     tea.String("2014-05-26"), // Nomor versi operasi API.
		Protocol:    tea.String("HTTPS"), // Protokol permintaan. Nilai valid: HTTP dan HTTPS. Kami sarankan Anda menggunakan HTTPS. 
		Method:      tea.String("POST"), // Metode permintaan.
		AuthType:    tea.String("AK"), // Jenis autentikasi. Gunakan tipe default. Jika operasi API mendukung permintaan anonim, Anda dapat menentukan parameter Anonymous untuk memulai permintaan anonim. 
		Style:       tea.String("RPC"), // Gaya API, seperti RPC dan ROA.
		Pathname:    tea.String("/"), // Jalur operasi API. Jalur default operasi API bergaya RPC adalah /.
		ReqBodyType: tea.String("json"), // Format badan permintaan. 
		BodyType:    tea.String("json"), // Format badan respons. 
	}

	// Konfigurasikan parameter kueri.
	query := map[string]interface{}{
		"RegionId": tea.String("cn-hangzhou"),
	}
	// Konfigurasikan opsi runtime.
	runtime := &util.RuntimeOptions{}
	// Buat permintaan API dan konfigurasikan parameter.
	request := &openapi.OpenApiRequest{
		Query: openapiutil.Query(query),
	}
	// Panggil operasi API dan kembalikan respons.
	response, err := client.CallApi(params, request, runtime)
	if err != nil {
		panic(err)
	}
	// Responsnya bertipe MAP, yang berisi badan respons, header respons, dan kode status HTTP. 
	fmt.Println(response["body"])
}

Contoh: Panggil operasi API bergaya RESTful (ROA)

Dalam contoh ini, operasi DescribeClustersV1 dari Container Service for Kubernetes (ACK) dipanggil untuk menunjukkan cara melakukan panggilan generik suatu operasi.

package main

import (
	"fmt"
	"os"

	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
	openapiutil "github.com/alibabacloud-go/openapi-util/service"
	util "github.com/alibabacloud-go/tea-utils/v2/service"
	"github.com/alibabacloud-go/tea/tea"
)

func main() {
	// Dapatkan ID AccessKey dan rahasia AccessKey dari variabel lingkungan.
	config := &openapi.Config{
		AccessKeyId:     tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
		AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
	}
	// Tentukan titik akhir layanan. Untuk informasi lebih lanjut, kunjungi https://api.aliyun.com/product/CS.
	config.Endpoint = tea.String("cs.cn-qingdao.aliyuncs.com")
	client, err := openapi.NewClient(config)
	if err != nil {
		panic(err)
	}
	params := &openapi.Params{
		// Operasi yang ingin Anda panggil.
		Action: tea.String("DescribeClustersV1"),
		// Nomor versi operasi API.
		Version: tea.String("2015-12-15"),
		// Protokol permintaan. Nilai valid: HTTP dan HTTPS. Kami sarankan Anda menggunakan HTTPS. 
		Protocol: tea.String("HTTPS"),
		// Metode HTTP dari operasi API.
		Method:   tea.String("GET"),
		// Jenis autentikasi. Gunakan tipe default. Jika operasi API mendukung permintaan anonim, Anda dapat menentukan parameter Anonymous untuk memulai permintaan anonim. 
		AuthType: tea.String("AK"),
		// Gaya API, seperti RPC dan ROA.
		Style:    tea.String("ROA"),
		// URL operasi. Jalur default operasi bergaya RPC adalah /. Anda dapat memperoleh URL operasi bergaya ROA dari parameter data.path dalam metadata API. 
		Pathname: tea.String("/api/v1/clusters"),
		// Format badan permintaan.
		ReqBodyType: tea.String("json"),
		// Format badan respons.
		BodyType: tea.String("json"),
	}
	// Konfigurasikan parameter kueri.
	queries := map[string]interface{}{}
	queries["name"] = tea.String("cluster-demo")
	request := &openapi.OpenApiRequest{
		Query: openapiutil.Query(queries),
	}
	// opsi runtime
	runtime := &util.RuntimeOptions{}
	// Responsnya bertipe MAP, yang berisi badan respons, header respons, dan kode status HTTP. 
	response, err := client.CallApi(params, request, runtime)
	if err != nil {
		panic(err)
	}
	fmt.Println(response["body"])
}