全部产品
Search
文档中心

Alibaba Cloud SDK:Panggilan Generik

更新时间:Jul 06, 2025

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-openapi

Panggil 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 "in":"query", lewatkan parameter dalam string kueri.

badan

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 jenis badan permintaan.

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();