Alibaba Cloud SDK for Java V2.0 mendukung panggilan API generik. Topik ini menjelaskan cara membuat panggilan generik menggunakan Alibaba Cloud SDK for Java V2.0.
Karakteristik
Ringan: Anda dapat menggunakan Alibaba Cloud SDK V2.0 untuk PHP untuk memanggil operasi API hanya dengan menginstal pustaka inti dari Alibaba Cloud SDK, tanpa perlu menginstal SDK untuk setiap layanan.
Mudah digunakan: Anda hanya perlu menyiapkan parameter permintaan umum dan menggunakan klien umum untuk memulai permintaan. Tanggapan akan dikembalikan dalam format yang standar.
Untuk informasi lebih lanjut, lihat Panggilan generik dan panggilan spesifik.
Catatan penggunaan
Sebelum membuat 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 PHP:
composer require alibabacloud/darabonba-openapiPanggil operasi API
Inisialisasi klien permintaan
Buat objek OpenApiClient untuk menginisialisasi klien permintaan, lalu gunakan klien tersebut untuk memanggil operasi API. Saat menginisialisasi klien, Anda juga dapat menggunakan alat Kredensial. Untuk informasi lebih lanjut tentang alat Kredensial, lihat Kelola kredensial akses.
// getenv menunjukkan bahwa pasangan AccessKey diperoleh dari variabel lingkungan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah dikonfigurasi.
$config = new Config([
"accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
"accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
]);
// Tentukan titik akhir layanan. Dalam contoh ini, titik akhir Elastic Compute Service (ECS) di wilayah China (Hangzhou) digunakan.
$config->endpoint = "ecs-cn-hangzhou.aliyuncs.com";
// $config->protocol = "HTTPS"; // Tentukan HTTPS sebagai protokol.
$client = new OpenApiClient($config);
// Gunakan kredensial default untuk menginisialisasi klien kredensial.
// $credentialClient = new Credential();
// $Config = new Config([
// Konfigurasikan kredensial.
// 'credential' => $credentialClient,
// // Nama domain layanan.
// 'endpoint' => 'ecs-cn-hangzhou.aliyuncs.com'
// ]);
// $client = new OpenApiClient($Config);Konfigurasikan informasi tentang operasi API
Gunakan Params untuk mengonfigurasi informasi dasar tentang operasi API, seperti gaya API, versi API, dan metode permintaan.
$params = new Params([
"action" => "DescribeInstanceTypeFamilies", // Operasi API.
"version" => "2014-05-26", // Nomor versi operasi.
"protocol" => "HTTPS", // Protokol operasi.
"method" => "POST", // Metode HTTP operasi.
"authType" => "AK", // Metode autentikasi.
"pathname" => "/", // URL operasi.
"reqBodyType" => "json", // Format badan permintaan.
"bodyType" => "json",// Badan permintaan tipe JSON.
"style" => "RPC" // Gaya API, seperti pemanggilan prosedur jarak jauh (RPC) dan arsitektur berorientasi sumber daya (ROA).
]);Konfigurasikan parameter permintaan
Gunakan OpenApiRequest untuk mengonfigurasi parameter permintaan. Anda dapat melewati parameter permintaan dalam string kueri, badan, atau aliran. Pilih metode berdasarkan metadata operasi API. Sebagai contoh, parameter RegionId dari operasi API DescribeInstanceTypeFamilies didefinisikan sebagai {"name":"RegionId","in":"query",...}} dalam metadata. Nilai "in":"query" menunjukkan bahwa parameter RegionId dilewatkan dalam string kueri.
Cara parameter dilewatkan | Deskripsi |
kueri | Jika metadata mendefinisikan |
badan | Jika metadata mendefinisikan |
aliran | Jika Anda perlu mengunggah file, Anda dapat melewati aliran file dengan mengonfigurasi parameter Stream. |
// Skenario 1: Konfigurasikan string kueri.
$query = ["RegionId" => "cn-hangzhou"];
$request = new OpenApiRequest([
"query" => OpenApiUtilClient::query($query),
]);
// Skenario 2: Konfigurasikan badan dan atur reqBodyType ke json.
// $body = [
// "param1" => "value1"
// ];
// $request = new OpenApiRequest([
// "body" => OpenApiUtilClient::query($body)
// ]);
// Skenario 3: Konfigurasikan parameter Stream untuk melewati aliran file
// $request = new OpenApiRequest([
// "stream" => "<FILE_STREAM>", // Aliran file yang ingin Anda lewatkan.
// ]);
// Skenario 4: Konfigurasikan badan permintaan dan atur reqBodyType ke formData.
// $formData = [
// "param1" => "value1",
// ];
// $request = new OpenApiRequest([
// "body" => $formData,
// ]);
Ajukan permintaan
Gunakan OpenApiClient untuk memanggil metode callApi guna mengajukan permintaan. Saat memanggil operasi API, Anda dapat menentukan parameter waktu proses, seperti timeout dan proxy. Untuk informasi lebih lanjut, lihat Pengaturan Lanjutan.
// Buat instance RuntimeOptions. Anda dapat mengonfigurasi parameter waktu proses dalam instance RuntimeOptions, seperti periode timeout.
$runtime = new RuntimeOptions([]);
// $runtime -> ignoreSSL = true; // Nilai true menentukan untuk menonaktifkan verifikasi sertifikat. Nilai false menentukan untuk mengaktifkan verifikasi sertifikat.
// $runtime -> httpProxy = "http://127.0.0.1:8080"; // Pengaturan proxy.
// $runtime -> httpsProxy = "https://username:password@proxyServer:port";
// $runtime -> noProxy = "127.0.0.1,localhost";
// Tanggapan adalah tipe MAP, yang berisi badan tanggapan, header tanggapan, dan kode status HTTP.
$response = $client->callApi($params, $request, $runtime);
var_dump($response);Kode contoh
Panggil operasi API RPC
Dalam contoh ini, operasi DescribeInstanceTypeFamilies dari Elastic Compute Service (ECS) dipanggil untuk menunjukkan cara membuat panggilan generik terhadap suatu operasi.
<?php
namespace AlibabaCloud\SDK\Sample;
require_once 'vendor/autoload.php';
use AlibabaCloud\Credentials\Credential;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\OpenApiUtil\OpenApiUtilClient;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Darabonba\OpenApi\Models\Config;
use Darabonba\OpenApi\Models\OpenApiRequest;
use Darabonba\OpenApi\Models\Params;
use Darabonba\OpenApi\OpenApiClient;
class Sample
{
public static function main()
{
// Dapatkan pasangan AccessKey dari variabel lingkungan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah dikonfigurasi.
$config = new Config([
"accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
"accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
]);
// Tentukan titik akhir layanan. Dalam contoh ini, titik akhir Elastic Compute Service (ECS) di wilayah China (Hangzhou) digunakan.
$config->endpoint = "ecs-cn-hangzhou.aliyuncs.com";
$client = new OpenApiClient($config);
$params = new Params([
"action" => "DescribeInstanceTypeFamilies", // Operasi API.
"version" => "2014-05-26", // Nomor versi operasi.
"protocol" => "HTTPS", // Protokol operasi.
"method" => "POST", // Metode HTTP operasi.
"authType" => "AK", // Metode autentikasi.
"style" => "RPC", // Gaya API.
"pathname" => "/", // URL operasi.
"reqBodyType" => "json", // Format badan permintaan.
"bodyType" => "json",// Badan permintaan tipe JSON.
]);
// Konfigurasikan parameter kueri.
$query = ["RegionId" => "cn-hangzhou"];
$request = new OpenApiRequest([
"query" => OpenApiUtilClient::query($query),
]);
// Buat instance RuntimeOptions. Anda dapat mengonfigurasi parameter waktu proses dalam instance RuntimeOptions, seperti periode timeout.
$runtime = new RuntimeOptions([]);
// Tanggapan adalah tipe MAP, yang berisi badan tanggapan, header tanggapan, dan kode status HTTP.
$response = $client->callApi($params, $request, $runtime);
var_dump($response);
}
}
Sample::main();Panggil operasi API RESTful
Dalam contoh ini, operasi DescribeClustersV1 dari Container Service for Kubernetes (ACK) dipanggil untuk menunjukkan cara membuat panggilan generik terhadap suatu operasi.
<?php
namespace AlibabaCloud\SDK\Sample;
require_once 'vendor/autoload.php';
use Darabonba\OpenApi\OpenApiClient;
use AlibabaCloud\OpenApiUtil\OpenApiUtilClient;
use Darabonba\OpenApi\Models\Config;
use Darabonba\OpenApi\Models\Params;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Darabonba\OpenApi\Models\OpenApiRequest;
class Sample
{
public static function main()
{
$config = new Config([
"accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
"accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
]);
$config->endpoint = "cs.cn-qingdao.aliyuncs.com";
$client = new OpenApiClient($config);
$params = new Params([
// Nama operasi API.
"action" => "DescribeClustersV1",
// Nomor versi operasi API.
"version" => "2015-12-15",
// Protokol operasi API.
"protocol" => "HTTPS",
// Metode HTTP operasi API.
"method" => "GET",
"authType" => "AK",
"style" => "ROA",
// Jalur operasi API.
"pathname" => "/api/v1/clusters",
// Format badan permintaan.
"reqBodyType" => "json",
// Format badan tanggapan.
"bodyType" => "json"
]);
// params kueri
$queries = [
"name" => "cluster-demo"
];
$request = new OpenApiRequest([
"query" => OpenApiUtilClient::query($queries)
]);
// opsi waktu proses
$runtime = new RuntimeOptions([]);
// Tanggapan adalah tipe MAP, yang berisi badan tanggapan, header tanggapan, dan kode status HTTP.
$response = $client->callApi($params, $request, $runtime);
var_dump($response);
}
}
Sample::main();