Tous les produits
Search
Centre de documentation

Alibaba Cloud SDK:Appels génériques

Dernière mise à jour :Aug 11, 2026

Alibaba Cloud SDK for Java V2.0 prend en charge les appels d'API génériques, qui permettent d'appeler n'importe quelle opération OpenAPI sans installer les SDK spécifiques à chaque service.

Caractéristiques

Légèreté : seule la bibliothèque principale d'Alibaba Cloud SDK est requise. Vous n'avez pas besoin d'installer le SDK de chaque service.

Simplicité d'utilisation : créez des paramètres de requête communs et utilisez un client standard pour envoyer les requêtes. Les réponses sont renvoyées dans des formats standards.

Pour plus d'informations, consultez Appels génériques et appels spécialisés.

Remarques d'utilisation

Avant d'effectuer un appel générique, consultez les métadonnées de l'opération d'API pour obtenir le style de l'API, les paramètres de requête et l'URL.

Installer la bibliothèque principale d'Alibaba Cloud SDK

Exécutez la commande suivante pour installer la bibliothèque principale d'Alibaba Cloud SDK V2.0 pour PHP :

composer require alibabacloud/darabonba-openapi

Appeler une opération d'API

Initialiser un client de requête

Créez un objet OpenApiClient pour initialiser un client de requête et appeler l'opération d'API. Vous pouvez également utiliser l'outil Credentials pour initialiser le client. Pour plus d'informations, consultez Gérer les identifiants d'accès.

        // getenv indicates that the AccessKey pair is obtained from environment variables. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variables are configured. 
        $config = new Config([
            "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
        ]);
        // Specify the endpoint of the service. In this example, the endpoint of Elastic Compute Service (ECS) in the China (Hangzhou) region is used. 
        $config->endpoint = "ecs-cn-hangzhou.aliyuncs.com";
        // $config->protocol = "HTTPS"; // Specify HTTPS as the protocol.
        $client = new OpenApiClient($config);

        // Use the default credential to initialize the credential client. 
        // $credentialClient = new Credential();

        // $Config = new Config([
        // Configure the credential.
        // 'credential' => $credentialClient,
        // // The domain name of the service.
        // 'endpoint' => 'ecs-cn-hangzhou.aliyuncs.com'
        // ]);
        // $client = new OpenApiClient($Config);

Configurer les informations de l'opération d'API

Utilisez Params pour configurer l'opération d'API, notamment le style de l'API, la version et la méthode de requête.

         $params = new Params([
            "action" => "DescribeInstanceTypeFamilies", // The API operation.
            "version" => "2014-05-26", // The version number of the operation.
            "protocol" => "HTTPS", // The protocol of the operation.
            "method" => "POST", // The HTTP method of the operation.
            "authType" => "AK", // The authentication method.
            "pathname" => "/", // The URL of the operation.
            "reqBodyType" => "json", // The format of the request body.
            "bodyType" => "json",// The request body of the JSON type.
            "style" => "RPC" // The API style, such as remote procedure call (RPC) and resource-oriented architecture (ROA).
        ]);

Configurer les paramètres de requête

Utilisez OpenApiRequest pour configurer les paramètres de requête. Selon les métadonnées de l'opération d'API, vous pouvez transmettre les paramètres via une chaîne de requête, un corps ou un flux. Par exemple, le paramètre RegionId de l'opération DescribeInstanceTypeFamilies est défini comme {"name":"RegionId","in":"query",...}} dans les métadonnées. La valeur "in":"query" indique que le paramètre RegionId est transmis dans une chaîne de requête.

Mode de transmission du paramètre

Description

query

Si les métadonnées indiquent "in":"query", transmettez le paramètre dans la chaîne de requête.

body

Si les métadonnées spécifient "in":"body'' ou "in": "formData", placez le paramètre dans le corps de la requête. Dans ce cas, définissez une valeur pour le paramètre reqBodyType correspondant au type de corps de requête utilisé.

stream

Pour uploader des fichiers, transmettez des flux de fichiers en configurant le paramètre Stream.

        // Scenario 1: Configure a query string.
        $query = ["RegionId" => "cn-hangzhou"];
        $request = new OpenApiRequest([
            "query" => OpenApiUtilClient::query($query),
        ]);

        // Scenario 2: Configure the body and set reqBodyType to json.
        // $body = [
        //     "param1" => "value1"
        // ];
        // $request = new OpenApiRequest([
        //     "body" => OpenApiUtilClient::query($body)
        // ]);

        // Scenario 3: Configure the Stream parameter to pass file streams
        // $request = new OpenApiRequest([
        //   "stream" =>  "<FILE_STREAM>",   // The file stream that you want to pass.
        // ]);

        // Scenario 4: Configure a request body and set reqBodyType to formData.
        // $formData = [
        //     "param1" => "value1",
        // ];
        // $request = new OpenApiRequest([
        //      "body" => $formData,  
        // ]);

Envoyer une requête

Utilisez OpenApiClient pour appeler la méthode callApi et envoyer la requête. Vous pouvez spécifier des paramètres d'exécution tels que le délai d'expiration et les paramètres de proxy. Pour plus d'informations, consultez Paramètres avancés.

        // Create a RuntimeOptions instance. You can configure runtime parameters in the RuntimeOptions instance, such as the timeout period. 
        $runtime = new RuntimeOptions([]);
        // $runtime -> ignoreSSL = true; // A value of true specifies to disable certificate verification. A value of false specifies to enable certificate verification.
        // $runtime -> httpProxy = "http://127.0.0.1:8080"; // The proxy settings.
        // $runtime -> httpsProxy = "https://username:password@proxyServer:port";
        // $runtime -> noProxy = "127.0.0.1,localhost";
        // The response is of the MAP type, which contains the response body, response headers, and HTTP status code. 
        $response = $client->callApi($params, $request, $runtime);
        var_dump($response);

Exemples de code

Appeler une opération d'API RPC

L'exemple suivant effectue un appel générique à l'opération DescribeInstanceTypeFamilies d'ECS.

<?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()
    {
        // Obtain the AccessKey pair from environment variables. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variables are configured. 
        $config = new Config([
            "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
        ]);
        // Specify the endpoint of the service. In this example, the endpoint of Elastic Compute Service (ECS) in the China (Hangzhou) region is used. 
        $config->endpoint = "ecs-cn-hangzhou.aliyuncs.com";
        $client = new OpenApiClient($config);

        $params = new Params([
            "action" => "DescribeInstanceTypeFamilies", // The API operation.
            "version" => "2014-05-26", // The version number of the operation.
            "protocol" => "HTTPS", // The protocol of the operation.
            "method" => "POST", // The HTTP method of the operation.
            "authType" => "AK", // The authentication method.
            "style" => "RPC", // The API style.
            "pathname" => "/", // The URL of the operation.
            "reqBodyType" => "json", // The format of the request body.
            "bodyType" => "json",// The request body of the JSON type.
           
        ]);
      
        // Configure the query parameters.
        $query = ["RegionId" => "cn-hangzhou"];
        $request = new OpenApiRequest([
            "query" => OpenApiUtilClient::query($query),
        ]);

        // Create a RuntimeOptions instance. You can configure runtime parameters in the RuntimeOptions instance, such as the timeout period. 
        $runtime = new RuntimeOptions([]);
        // The response is of the MAP type, which contains the response body, response headers, and HTTP status code. 
        $response = $client->callApi($params, $request, $runtime);
        var_dump($response);
    }
}

Sample::main();

Appeler une opération d'API RESTful

L'exemple suivant effectue un appel générique à l'opération DescribeClustersV1 d'ACK.

<?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([
            // The name of the API operation.
            "action" => "DescribeClustersV1",
            // The version number of the API operation.
            "version" => "2015-12-15",
            // The protocol of the API operation.
            "protocol" => "HTTPS",
            // The HTTP method of the API operation.
            "method" => "GET",
            "authType" => "AK",
            "style" => "ROA",
            // The path of the API operation.
            "pathname" => "/api/v1/clusters",
            // The format of the request body.
            "reqBodyType" => "json",
            // The format of the response body.
            "bodyType" => "json"
        ]);
        // query params
        $queries = [
            "name" => "cluster-demo"
        ];
        $request = new OpenApiRequest([
            "query" => OpenApiUtilClient::query($queries)
        ]);
        // runtime options
        $runtime = new RuntimeOptions([]);
        // The response is of the MAP type, which contains the response body, response headers, and HTTP status code. 
        $response = $client->callApi($params, $request, $runtime);
        var_dump($response);
    }
}

Sample::main();