Java 用 Alibaba Cloud SDK V2.0 は、汎用 API 呼び出しをサポートしています。このトピックでは、Java 用 Alibaba Cloud SDK V2.0 を使用して汎用呼び出しを行う方法について説明します。
特徴
軽量: PHP 用 Alibaba Cloud SDK V2.0 を使用すると、各サービスの SDK をインストールする必要なく、Alibaba Cloud SDK のコアライブラリのみをインストールすることで、API 操作を呼び出すことができます。
使いやすさ:共通のリクエストパラメータを作成し、共通のクライアントを使用してリクエストを開始するだけで済みます。レスポンスは共通のフォーマットで返されます。
詳細については、「汎用呼び出しと専用呼び出し」をご参照ください。
使用上の注意
汎用呼び出しを行う前に、API 操作のメタデータ を参照して、API スタイル、リクエストパラメータ、および URL を取得することをお勧めします。
Alibaba Cloud SDK のコアライブラリをインストールする
ターミナルで次のコマンドを実行して、PHP 用 Alibaba Cloud SDK V2.0 のコアライブラリをインストールします。
composer require alibabacloud/darabonba-openapiAPI 操作を呼び出す
リクエストクライアントを初期化する
OpenApiClient オブジェクトを作成してリクエストクライアントを初期化し、そのクライアントを使用して API 操作を呼び出します。クライアントを初期化する際に、Credentials ツールを使用することもできます。Credentials ツールの詳細については、「アクセス認証情報の管理」をご参照ください。
// getenv は、AccessKey ペアが環境変数から取得されることを示します。 ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$config = new Config([
"accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
"accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
]);
// サービスのエンドポイントを指定します。この例では、中国 (杭州) リージョンの Elastic Compute Service (ECS) のエンドポイントが使用されています。
$config->endpoint = "ecs-cn-hangzhou.aliyuncs.com";
// $config->protocol = "HTTPS"; // プロトコルとして HTTPS を指定します。
$client = new OpenApiClient($config);
// デフォルトの認証情報を使用して、認証情報クライアントを初期化します。
// $credentialClient = new Credential();
// $Config = new Config([
// 認証情報を設定します。
// 'credential' => $credentialClient,
// // サービスのドメイン名。
// 'endpoint' => 'ecs-cn-hangzhou.aliyuncs.com'
// ]);
// $client = new OpenApiClient($Config);API 操作に関する情報を設定する
Params を使用して、API スタイル、API バージョン、リクエストメソッドなど、API 操作の基本情報を設定します。
$params = new Params([
"action" => "DescribeInstanceTypeFamilies", // API 操作。
"version" => "2014-05-26", // 操作のバージョン番号。
"protocol" => "HTTPS", // 操作のプロトコル。
"method" => "POST", // 操作の HTTP メソッド。
"authType" => "AK", // 認証方式。
"pathname" => "/", // 操作の URL。
"reqBodyType" => "json", // リクエストボディのフォーマット。
"bodyType" => "json",// JSON タイプのリクエストボディ。
"style" => "RPC" // API スタイル。例:リモートプロシージャコール (RPC) やリソース指向アーキテクチャ (ROA)。
]);リクエストパラメータを設定する
OpenApiRequest を使用して、リクエストパラメータを設定します。リクエストパラメータは、クエリ文字列、ボディ、またはストリームで渡すことができます。API 操作のメタデータに基づいて、リクエストパラメータを渡す方法を選択します。たとえば、DescribeInstanceTypeFamilies API 操作の RegionId リクエストパラメータは、メタデータ で {"name":"RegionId","in":"query",...}} として定義されています。"in":"query" は、RegionId パラメータがクエリ文字列で渡されることを示します。
パラメータの渡し方 | 説明 |
query | メタデータで |
body | メタデータで |
stream | ファイルをアップロードする必要がある場合は、Stream パラメータを設定することでファイルストリームを渡すことができます。 |
// シナリオ 1:クエリ文字列を設定する。
$query = ["RegionId" => "cn-hangzhou"];
$request = new OpenApiRequest([
"query" => OpenApiUtilClient::query($query),
]);
// シナリオ 2:ボディを設定し、reqBodyType を json に設定する。
// $body = [
// "param1" => "value1"
// ];
// $request = new OpenApiRequest([
// "body" => OpenApiUtilClient::query($body)
// ]);
// シナリオ 3:Stream パラメータを設定してファイルストリームを渡す。
// $request = new OpenApiRequest([
// "stream" => "<FILE_STREAM>", // 渡すファイルストリーム。
// ]);
// シナリオ 4:リクエストボディを設定し、reqBodyType を formData に設定する。
// $formData = [
// "param1" => "value1",
// ];
// $request = new OpenApiRequest([
// "body" => $formData,
// ]);
リクエストを開始する
OpenApiClient を使用して callApi メソッドを呼び出し、リクエストを開始します。API 操作を呼び出すときに、タイムアウトパラメータやプロキシパラメータなどのランタイムパラメータを指定できます。詳細については、「詳細設定」をご参照ください。
// RuntimeOptions インスタンスを作成します。 RuntimeOptions インスタンスでは、タイムアウト期間などのランタイムパラメータを設定できます。
$runtime = new RuntimeOptions([]);
// $runtime -> ignoreSSL = true; // true の値は証明書の検証を無効にすることを指定します。 false の値は証明書の検証を有効にすることを指定します。
// $runtime -> httpProxy = "http://127.0.0.1:8080"; // プロキシ設定。
// $runtime -> httpsProxy = "https://username:password@proxyServer:port";
// $runtime -> noProxy = "127.0.0.1,localhost";
// レスポンスは MAP タイプで、レスポンスボディ、レスポンスヘッダー、HTTP ステータスコードが含まれています。
$response = $client->callApi($params, $request, $runtime);
var_dump($response);サンプルコード
RPC API 操作を呼び出す
この例では、ECS の DescribeRegions 操作を呼び出して、操作の汎用呼び出しを行う方法を示します。
<?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()
{
// 環境変数から AccessKey ペアを取得します。 ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$config = new Config([
"accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
"accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
]);
// サービスのエンドポイントを指定します。この例では、中国 (杭州) リージョンの Elastic Compute Service (ECS) のエンドポイントが使用されています。
$config->endpoint = "ecs-cn-hangzhou.aliyuncs.com";
$client = new OpenApiClient($config);
$params = new Params([
"action" => "DescribeInstanceTypeFamilies", // API 操作。
"version" => "2014-05-26", // 操作のバージョン番号。
"protocol" => "HTTPS", // 操作のプロトコル。
"method" => "POST", // 操作の HTTP メソッド。
"authType" => "AK", // 認証方式。
"style" => "RPC", // API スタイル。
"pathname" => "/", // 操作の URL。
"reqBodyType" => "json", // リクエストボディのフォーマット。
"bodyType" => "json",// JSON タイプのリクエストボディ。
]);
// クエリパラメータを設定します。
$query = ["RegionId" => "cn-hangzhou"];
$request = new OpenApiRequest([
"query" => OpenApiUtilClient::query($query),
]);
// RuntimeOptions インスタンスを作成します。 RuntimeOptions インスタンスでは、タイムアウト期間などのランタイムパラメータを設定できます。
$runtime = new RuntimeOptions([]);
// レスポンスは MAP タイプで、レスポンスボディ、レスポンスヘッダー、HTTP ステータスコードが含まれています。
$response = $client->callApi($params, $request, $runtime);
var_dump($response);
}
}
Sample::main();RESTful API 操作を呼び出す
この例では、Container Service for Kubernetes (ACK) の DescribeClustersV1 操作を呼び出して、操作の汎用呼び出しを行う方法を示します。
<?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([
// API 操作の名前。
"action" => "DescribeClustersV1",
// API 操作のバージョン番号。
"version" => "2015-12-15",
// API 操作のプロトコル。
"protocol" => "HTTPS",
// API 操作の HTTP メソッド。
"method" => "GET",
"authType" => "AK",
"style" => "ROA",
// API 操作のパス。
"pathname" => "/api/v1/clusters",
// リクエストボディのフォーマット。
"reqBodyType" => "json",
// レスポンスボディのフォーマット。
"bodyType" => "json"
]);
// クエリパラメータ
$queries = [
"name" => "cluster-demo"
];
$request = new OpenApiRequest([
"query" => OpenApiUtilClient::query($queries)
]);
// ランタイムオプション
$runtime = new RuntimeOptions([]);
// レスポンスは MAP タイプで、レスポンスボディ、レスポンスヘッダー、HTTP ステータスコードが含まれています。
$response = $client->callApi($params, $request, $runtime);
var_dump($response);
}
}
Sample::main();