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 Node.js untuk memanggil operasi API hanya dengan menginstal pustaka inti Alibaba Cloud SDK, tanpa perlu menginstal SDK untuk setiap layanan.
Mudah digunakan: Anda hanya perlu membuat parameter permintaan umum dan menggunakan klien umum untuk memulai permintaan. Respons 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
Jalankan perintah berikut di terminal Anda untuk menginstal pustaka inti Alibaba Cloud SDK V2.0 untuk Node.js:
npm install @alicloud/openapi-clientPanggil operasi API
Inisialisasi klien permintaan
Buat objek 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.
// Dapatkan AccessKey ID dan AccessKey secret dari variabel lingkungan.
let config = new OpenApi.Config({
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
});
config.endpoint = `ecs-cn-hangzhou.aliyuncs.com`;
let client = new OpenApi.default(config);
// Jika Anda tidak menentukan parameter, rantai kredensial default akan digunakan.
// const credentialClient = new Credential.default();
// let config = new OpenApi.Config({
// credential: credentialClient,
// });
// config.endpoint = `ecs-cn-hangzhou.aliyuncs.com`;
// let client = new OpenApi.default(config);// Dapatkan AccessKey ID dan AccessKey secret dari variabel lingkungan.
let config = new $OpenApi.Config({
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
});
config.endpoint = `ecs-cn-hangzhou.aliyuncs.com`;
let client = new OpenApi(config);
// Jika Anda tidak menentukan parameter, rantai kredensial default akan digunakan.
// let credential = new Credential();
// let config = new $OpenApi.Config({
// credential: credential,
// });
// config.endpoint = `ecs.cn-hangzhou.aliyuncs.com`;
// let client = new OpenApi(config)Konfigurasikan informasi tentang operasi API
Gunakan OpenApi.Params untuk mengonfigurasi informasi dasar tentang operasi API yang ingin Anda panggil, seperti gaya API, versi API, dan metode permintaan. Dalam contoh berikut, operasi DescribeInstanceTypeFamilies dipanggil.
// Konfigurasikan informasi tentang operasi API.
let params = new OpenApi.Params({
style: 'RPC', // Gaya API, seperti pemanggilan prosedur jarak jauh (RPC) dan arsitektur berorientasi sumber daya (ROA).
action: 'DescribeInstanceTypeFamilies', // Operasi API.
version: '2014-05-26', // Nomor versi operasi API.
protocol: 'HTTPS', // Protokol permintaan. Nilai valid: HTTP dan HTTPS. Kami sarankan Anda menggunakan HTTPS.
method: 'POST', // Metode HTTP dari operasi API.
authType: 'AK', // Jenis autentikasi. Gunakan tipe default. Jika operasi mendukung permintaan anonim, Anda dapat menentukan parameter Anonymous untuk memulai permintaan anonim.
pathname: `/`, // URL dari operasi. Jalur default operasi bergaya RPC adalah /. Anda dapat memperoleh URL operasi bergaya ROA dari parameter data.path dalam metadata API.
reqBodyType: 'json', // Format dari body permintaan.
bodyType: 'json', // Format dari body respons.
});// Konfigurasikan informasi tentang operasi API.
let params = new $OpenApi.Params({
style: 'RPC', // Gaya API, seperti pemanggilan prosedur jarak jauh (RPC) dan arsitektur berorientasi sumber daya (ROA).
action: 'DescribeInstanceTypeFamilies', // Operasi API.
version: '2014-05-26', // Nomor versi operasi API.
protocol: 'HTTPS', // Protokol permintaan. Nilai valid: HTTP dan HTTPS. Kami sarankan Anda menggunakan HTTPS.
method: 'POST', // Metode HTTP dari operasi API.
authType: 'AK', // Jenis autentikasi. Gunakan tipe default. Jika operasi mendukung permintaan anonim, Anda dapat menentukan parameter Anonymous untuk memulai permintaan anonim.
pathname: `/`, // URL dari operasi. Jalur default operasi bergaya RPC adalah /. Anda dapat memperoleh URL operasi bergaya ROA dari parameter data.path dalam metadata API.
reqBodyType: 'json', // Format dari body permintaan.
bodyType: 'json', // Format dari body respons.
});Konfigurasikan parameter permintaan
Gunakan OpenApi.OpenApiRequest untuk mengonfigurasi parameter permintaan. Anda dapat melewati parameter permintaan dalam string query, body, 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 query.
Bagaimana parameter dilewatkan | Deskripsi |
query | Jika metadata mendefinisikan |
body | Jika metadata mendefinisikan |
stream | Jika Anda perlu mengunggah file, Anda dapat melewati aliran file dengan mengonfigurasi parameter Stream. |
// Skenario 1: Konfigurasikan string query
let query = { 'RegionId': 'cn-hangzhou' };
let request = new OpenApi.OpenApiRequest({
query: OpenApiUtil.default.query(query),
});
// Skenario 2: Konfigurasikan body dan atur reqBodyType ke json.
// let body = {
// 'param1': 'value1',
// 'param2': 'value2',
// };
// let request = new OpenApi.OpenApiRequest({
// body: OpenApiUtil.default.query(body),
// });
// Skenario 3: Konfigurasikan parameter Stream untuk melewati aliran file
// let request = new OpenApi.OpenApiRequest({
// stream: '<FILE_STREAM>', // Ganti <FILE_STREAM> dengan aliran file sebenarnya.
// });
// Skenario 4: Konfigurasikan body permintaan dan atur reqBodyType ke formData.
// let formParams = {
// 'param1': 'value1',
// 'param2': 'value2',
// };
// let request = new OpenApi.OpenApiRequest({
// body: formParams,
// });
// Skenario 1: Konfigurasikan string query
let query: { [key: string]: any } = { "RegionId": "cn-hangzhou" };
let request = new $OpenApi.OpenApiRequest({
query: OpenApiUtil.query(query),
});
// Skenario 2: Konfigurasikan body dan atur reqBodyType ke json.
// let body = {
// "param1": "value1",
// "param2": "value2",
// };
// let request = new $OpenApi.OpenApiRequest({
// body: OpenApiUtil.query(body),
// });
// Skenario 3: Konfigurasikan parameter Stream untuk melewati aliran file
// let request = new $OpenApi.OpenApiRequest({
// stream: '<FILE_STREAM>', // Ganti <FILE_STREAM> dengan aliran file sebenarnya.
// });
// Skenario 4: Konfigurasikan body permintaan dan atur reqBodyType ke formData.
// let formParams = {
// "param1": "value1",
// "param2": "value2",
// };
// let request = new $OpenApi.OpenApiRequest({
// body: formParams, // Langsung lewatkan parameter formulir.
// });
Mulai permintaan
Gunakan OpenApiClient untuk memanggil metode callApi untuk memulai permintaan. Saat Anda memanggil operasi API, Anda dapat menentukan parameter runtime, seperti parameter timeout dan parameter proxy. Untuk informasi lebih lanjut, lihat Pengaturan Lanjutan.
// Konfigurasikan parameter runtime.
let runtime = new Util.RuntimeOptions({
// Nilai true menentukan untuk menonaktifkan verifikasi sertifikat. Nilai false menentukan untuk mengaktifkan verifikasi sertifikat.
// ignoreSSL: true,
// Konfigurasikan proxy HTTP.
// httpProxy: "http://xx.xx.xx.xx:xxxx",
// httpsProxy: "https://username:password@xxx.xxx.xxx.xxx:9999",
// Konfigurasikan alamat yang tidak memerlukan proxy.
// noProxy: '127.0.0.1,localhost',
// Konfigurasikan periode timeout untuk permintaan koneksi.
// connectTimeout: 10000,
// Konfigurasikan periode timeout untuk permintaan baca.
// readTimeout: 10000
});
// Kirim permintaan.
let response = await client.callApi(params, request, runtime);
// Respons bertipe MAP, yang berisi body respons, header respons, dan kode status HTTP.
console.log(JSON.stringify(response.body))// Konfigurasikan parameter runtime.
let runtime = new $Util.RuntimeOptions({
// Nilai true menentukan untuk menonaktifkan verifikasi sertifikat. Nilai false menentukan untuk mengaktifkan verifikasi sertifikat.
// ignoreSSL: true,
// Konfigurasikan proxy HTTP.
// httpProxy: "http://xx.xx.xx.xx:xxxx",
// httpsProxy: "https://username:password@xxx.xxx.xxx.xxx:9999",
// Konfigurasikan alamat yang tidak memerlukan proxy.
// noProxy: '127.0.0.1,localhost',
// Konfigurasikan periode timeout untuk permintaan koneksi.
// connectTimeout: 10000,
// Konfigurasikan periode timeout untuk permintaan baca.
// readTimeout: 10000
});
// Kirim permintaan.
let response = await client.callApi(params, request, runtime);
// Respons bertipe MAP, yang berisi body respons, header respons, dan kode status HTTP.
console.log(JSON.stringify(response.body)); Kode 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.
Node.js
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
const OpenApiUtil = require('@alicloud/openapi-util');
class Client {
static async main() {
// Dapatkan AccessKey ID dan AccessKey secret dari variabel lingkungan.
let config = new OpenApi.Config({
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
});
config.endpoint = `ecs-cn-hangzhou.aliyuncs.com`;
let client = new OpenApi.default(config);
let params = new OpenApi.Params({
style: 'RPC', // Gaya API.
action: 'DescribeInstanceTypeFamilies', // Operasi API.
version: '2014-05-26', // Nomor versi operasi.
protocol: 'HTTPS', // Protokol operasi.
method: 'POST', // Metode HTTP operasi.
authType: 'AK', // Jenis autentikasi. Gunakan tipe default. Jika operasi mendukung permintaan anonim, Anda dapat menentukan parameter Anonymous untuk memulai permintaan anonim.
pathname: `/`, // URL operasi. Jalur default operasi bergaya RPC adalah /. Anda dapat memperoleh URL operasi bergaya ROA dari parameter data.path dalam metadata API.
reqBodyType: 'json', // Format dari body permintaan.
bodyType: 'json', // Format dari body respons.
});
let query = { 'RegionId': 'cn-hangzhou' };
let request = new OpenApi.OpenApiRequest({
query: OpenApiUtil.default.query(query),
});
let runtime = new Util.RuntimeOptions({});
let response = await client.callApi(params, request, runtime);
console.log(JSON.stringify(response.body, null, 2))
}
}
exports.Client = Client;
Client.main();TypeScript
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import Util, * as $Util from '@alicloud/tea-util';
import OpenApiUtil from '@alicloud/openapi-util';
export default class Client {
static async main(): Promise<void> {
// Dapatkan AccessKey ID dan AccessKey secret dari variabel lingkungan.
let config = new $OpenApi.Config({
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
});
config.endpoint = `ecs-cn-hangzhou.aliyuncs.com`;
let client = new OpenApi(config);
let params = new $OpenApi.Params({
style: 'RPC', // Gaya API.
action: 'DescribeInstanceTypeFamilies', // Operasi API.
version: '2014-05-26', // Nomor versi operasi.
protocol: 'HTTPS', // Protokol operasi.
method: 'POST', // Metode HTTP operasi.
authType: 'AK',
pathname: `/`, // URL operasi.
reqBodyType: 'json', // Format dari body permintaan.
bodyType: 'json', // Format dari body respons.
});
// Konfigurasikan string query.
let query: { [key: string]: any } = { "RegionId": "cn-hangzhou" };
// Buat permintaan API.
let request = new $OpenApi.OpenApiRequest({
query: OpenApiUtil.query(query),
});
// Konfigurasikan parameter runtime.
let runtime = new $Util.RuntimeOptions({});
// Respons bertipe MAP, yang berisi body respons, header respons, dan kode status HTTP.
let response = await client.callApi(params, request, runtime);
console.log(JSON.stringify(response.body));
}
}
Client.main();Contoh: Panggil operasi API bergaya RESTful (ROA-style)
Dalam contoh ini, operasi DescribeClustersV1 dari Container Service for Kubernetes (ACK) dipanggil untuk menunjukkan cara melakukan panggilan generik suatu operasi.
Node.js
const OpenApi = require('@alicloud/openapi-client');
const OpenApiUtil = require('@alicloud/openapi-util');
const Util = require('@alicloud/tea-util');
const Tea = require('@alicloud/tea-typescript');
class Client {
static async main() {
// Dapatkan AccessKey ID dan AccessKey secret dari variabel lingkungan.
let config = new OpenApi.Config({
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
});
config.endpoint = `cs.cn-qingdao.aliyuncs.com`;
let client = new OpenApi.default(config);
let params = new OpenApi.Params({
// Operasi yang ingin Anda panggil.
action: 'DescribeClustersV1',
// Nomor versi operasi API.
version: '2015-12-15',
// Protokol yang digunakan untuk memanggil operasi.
protocol: 'HTTPS',
// Metode HTTP dari operasi API.
method: 'GET',
// Jenis autentikasi. Gunakan tipe default. Jika operasi mendukung permintaan anonim, Anda dapat menentukan parameter Anonymous untuk memulai permintaan anonim.
authType: 'AK',
style: 'ROA',
// URL operasi. Jalur default operasi bergaya RPC adalah /. Anda dapat memperoleh URL operasi bergaya ROA dari parameter data.path dalam metadata API.
pathname: `/api/v1/clusters`,
// Format dari body permintaan.
reqBodyType: 'json',
// Format dari body respons.
bodyType: 'json',
});
// Parameter query
let queries = {};
queries['name'] = 'cluster-demo';
let request = new OpenApi.OpenApiRequest({
query: OpenApiUtil.default.query(queries),
});
// Opsi runtime
let runtime = new Util.RuntimeOptions({});
// Respons bertipe MAP, yang berisi body respons, header respons, dan kode status HTTP.
let response = await client.callApi(params, request, runtime);
console.log(response.body);
}
}
exports.Client = Client;
Client.main();TypeScript
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import OpenApiUtil from '@alicloud/openapi-util';
import Util, * as $Util from '@alicloud/tea-util';
import * as $tea from '@alicloud/tea-typescript';
export default class Client {
static async main(): Promise<void> {
let config = new $OpenApi.Config({
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
});
config.endpoint = `cs.cn-qingdao.aliyuncs.com`;
let client = new OpenApi(config);
let params = new $OpenApi.Params({
// Operasi yang ingin Anda panggil.
action: "DescribeClustersV1",
// Nomor versi operasi API.
version: "2015-12-15",
// Protokol yang digunakan untuk memanggil operasi.
protocol: "HTTPS",
// Metode HTTP dari operasi API.
method: "GET",
authType: "AK",
style: "ROA",
// URL operasi.
pathname: `/api/v1/clusters`,
// Format dari body permintaan.
reqBodyType: "json",
// Format dari body respons.
bodyType: "json",
});
// Parameter query
let queries: { [key: string]: any } = { "name": "cluster-demo" };
let request = new $OpenApi.OpenApiRequest({
query: OpenApiUtil.query(queries),
});
// Opsi runtime
let runtime = new $Util.RuntimeOptions({});
// Respons bertipe MAP, yang berisi body respons, header respons, dan kode status HTTP.
let response = await client.callApi(params, request, runtime);
console.log(JSON.stringify(response.body));
}
}
Client.main();