すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud SDK:汎用呼び出し

最終更新日:Apr 15, 2025

Alibaba Cloud SDK for Java V2.0 は汎用 API 呼び出しをサポートしています。このトピックでは、Alibaba Cloud SDK for Java V2.0 を使用して汎用呼び出しを行う方法について説明します。

特徴

軽量: Alibaba Cloud SDK V2.0 for .Net を使用すると、各サービスの SDK をインストールする必要なく、Alibaba Cloud SDK のコアライブラリのみをインストールすることで API 操作を呼び出すことができます。

使いやすさ: 共通のリクエストパラメータを作成し、共通のクライアントを使用してリクエストを開始するだけで済みます。レスポンスは共通のフォーマットで返されます。

詳細については、「汎用呼び出しと専用呼び出し」をご参照ください。

使用上の注意

汎用呼び出しを行う前に、API 操作のメタデータ を参照して、API スタイル、リクエストパラメータ、URL を取得することをお勧めします。

SDK のインストール

ターミナルで次のコマンドを実行して、.NET 用の Alibaba Cloud SDK V2.0 のコアライブラリをインストールします。コアライブラリの最新バージョンについては、AlibabaCloud.OpenApiClient をご参照ください。

dotnet add package AlibabaCloud.OpenApiClient --version 0.1.13

API 操作の呼び出し

リクエストクライアントの初期化

AlibabaCloud.OpenApiClient.Client オブジェクトを作成してリクエストクライアントを初期化し、このクライアントを使用して API 操作を呼び出します。クライアントを初期化する際に、Credentials ツールを使用することもできます。 Credentials ツールの詳細については、「アクセス認証情報の管理」をご参照ください。

        public static AlibabaCloud.OpenApiClient.Client CreateClient()
        {
            AlibabaCloud.OpenApiClient.Models.Config config =
                new AlibabaCloud.OpenApiClient.Models.Config
                {
                    // 必須。コードランタイム環境で次の環境変数が設定されていることを確認します: ALIBABA_CLOUD_ACCESS_KEY_ID。
                    AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                    // 必須。コードランタイム環境で次の環境変数が設定されていることを確認します: ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                    AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
                };
            config.Endpoint = "ecs-cn-hangzhou.aliyuncs.com";
            return new AlibabaCloud.OpenApiClient.Client(config);
        }
        
        // Credentials ツールを使用します。
        // public static AlibabaCloud.OpenApiClient.Client CreateClient()
        // {
        //     // AccessKey ペアを使用して Credentials クライアントを初期化します。
        //     Aliyun.Credentials.Models.Config credentialsConfig =
        //         new Aliyun.Credentials.Models.Config()
        //         {
        //             // 認証情報の種類。
        //             Type = "access_key",
        //             // 環境変数から AccessKey ID を取得します。
        //             AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
        //             // 環境変数から AccessKey シークレットを取得します。
        //             AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
        //         };
        //     Aliyun.Credentials.Client credentialClient = new Aliyun.Credentials.Client(credentialsConfig);
        //     AlibabaCloud.OpenApiClient.Models.Config config =
        //         new AlibabaCloud.OpenApiClient.Models.Config
        //         {
        //             Credential = credentialClient,
        //             Endpoint = "ecs-cn-hangzhou.aliyuncs.com",
        //         };

        //     return new AlibabaCloud.OpenApiClient.Client(config);
        // }

API 操作に関する情報の構成

AlibabaCloud.OpenApiClient.Models.Params を使用して、API スタイル、API バージョン、リクエストメソッドなど、API 操作の基本情報を構成します。次の例では、DescribeInstanceTypeFamilies 操作が呼び出されます。

        AlibabaCloud.OpenApiClient.Models.Params params_ =
            new AlibabaCloud.OpenApiClient.Models.Params
            {
                Action = "DescribeInstanceTypeFamilies", // API 操作。
                Version = "2014-05-26", // API 操作のバージョン番号。
                Protocol = "HTTPS", // リクエストプロトコル。有効な値: HTTP および HTTPS。HTTPS を使用することをお勧めします。
                Method = "POST", // リクエストメソッド。
                AuthType = "AK", // 認証タイプ。デフォルトタイプを使用します。API 操作が匿名リクエストをサポートしている場合は、Anonymous パラメータを指定して匿名リクエストを開始できます。
                Style = "RPC", // API スタイル。例: リモートプロシージャコール (RPC) およびリソース指向アーキテクチャ (ROA)。
                Pathname = "/", // API 操作の URL。RPC スタイルの操作のデフォルトパスは / です。ROA スタイルの操作の URL は、API メタデータの data.path パラメータから取得できます。
                ReqBodyType = "json", // リクエストボディのタイプ。有効な値: json および formData。
                BodyType = "json", // レスポンスフォーマット。有効な値: json。
            };

リクエストパラメータの構成

AlibabaCloud.OpenApiClient.Models.OpenApiRequest を使用してリクエストパラメータを構成します。リクエストパラメータは、クエリ文字列、ボディ、またはストリームで渡すことができます。API 操作のメタデータに基づいて、リクエストパラメータを渡すメソッドを選択します。たとえば、DescribeInstanceTypeFamilies API 操作の RegionId リクエストパラメータは、メタデータ{"name":"RegionId","in":"query",...}} として定義されています。"in":"query" は、RegionId パラメータがクエリ文字列で渡されることを示します。

メソッド

説明

クエリ

メタデータで "in":"query" が定義されている場合は、パラメータをクエリ文字列で渡します。

ボディ

メタデータで "in":"body'' または "in": "formData" が定義されている場合は、パラメータをリクエストボディで渡します。リクエストパラメータをリクエストボディで渡す場合は、リクエストボディのタイプに基づいて reqBodyType パラメータの値を指定します。

ストリーム

ファイルをアップロードする必要がある場合は、Stream パラメータを構成することでファイルストリームを渡すことができます。

        // メソッド 1: クエリ文字列を構成します。
        Dictionary<string, object> queries = new Dictionary<string, object>() { };
        queries["RegionId"] = "cn-hangzhou";
        AlibabaCloud.OpenApiClient.Models.OpenApiRequest request =
            new AlibabaCloud.OpenApiClient.Models.OpenApiRequest
            {
                Query = AlibabaCloud.OpenApiUtil.Client.Query(queries),
            };

//        // メソッド 2: ボディを構成し、reqBodyType を json に設定します。
//        Dictionary<string, object> body = new Dictionary<string, object>()
//        {
//            { "param1", "value1" },
//            { "param2", "value2" },
//        };
//        AlibabaCloud.OpenApiClient.Models.OpenApiRequest request =
//            new AlibabaCloud.OpenApiClient.Models.OpenApiRequest
//            {
//                Body = AlibabaCloud.OpenApiUtil.Client.Query(body),
//            };

//        // メソッド 3: ボディを構成し、reqBodyType を formData に設定します。
//        Dictionary<string, object> formData = new Dictionary<string, object>()
//        {
//            { "param1", "value1" },
//            { "param2", "value2" },
//        };
//        AlibabaCloud.OpenApiClient.Models.OpenApiRequest request =
//            new AlibabaCloud.OpenApiClient.Models.OpenApiRequest { Body = formData };

//        // メソッド 4: Stream パラメータを構成してファイルストリームを渡します。
//        AlibabaCloud.OpenApiClient.Models.OpenApiRequest request =
//            new AlibabaCloud.OpenApiClient.Models.OpenApiRequest
//            {
//                Stream = "<FILE_STREAM>",
//            };

リクエストの開始

AlibabaCloud.OpenApiClient.Client を使用して、CallApi メソッドを呼び出すことによってリクエストを開始します。さらに、タイムアウトやプロキシ設定などのランタイムパラメータを構成します。詳細については、「詳細設定」をご参照ください。

AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
var response = client.CallApi(params_, request, runtime);
// レスポンスは MAP タイプで、レスポンスボディ、レスポンスヘッダー、HTTP ステータスコードが含まれます。
Console.WriteLine(response["statusCode"]);

サンプルコード

例: RPC スタイルの API 操作の呼び出し

この例では、Elastic Compute Service (ECS) の DescribeInstanceTypeFamilies 操作を呼び出して、操作の汎用呼び出しを行う方法を示します。

namespace AlibabaCloud.SDK.Sample
{
    public class Sample 
    {

        public static AlibabaCloud.OpenApiClient.Client CreateClient()
        {
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                // 必須。コードランタイム環境で次の環境変数が設定されていることを確認します: ALIBABA_CLOUD_ACCESS_KEY_ID。
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // 必須。コードランタイム環境で次の環境変数が設定されていることを確認します: ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
            };
            config.Endpoint = "ecs-cn-hangzhou.aliyuncs.com";
            return new AlibabaCloud.OpenApiClient.Client(config);
        }

        public static AlibabaCloud.OpenApiClient.Models.Params CreateApiInfo()
        {
            AlibabaCloud.OpenApiClient.Models.Params params_ = new AlibabaCloud.OpenApiClient.Models.Params
            {
                // API 操作の名前。
                Action = "DescribeInstanceTypeFamilies",
                // API 操作のバージョン番号。
                Version = "2014-05-26",
                // API 操作のプロトコル。
                Protocol = "HTTPS",
                // API 操作の HTTP メソッド。
                Method = "POST",
                AuthType = "AK",
                Style = "RPC",
                // API 操作のパス。
                Pathname = "/",
                // リクエストボディのフォーマット。
                ReqBodyType = "json",
                // レスポンスボディのフォーマット。
                BodyType = "json",
            };
            return params_;
        }

        public static void Main(string[] args)
        {
            AlibabaCloud.OpenApiClient.Client client = CreateClient();
            AlibabaCloud.OpenApiClient.Models.Params params_ = CreateApiInfo();
            // クエリパラメータ
            Dictionary<string, object> queries = new Dictionary<string, object>(){};
            queries["RegionId"] = "cn-hangzhou";
            // ランタイムオプション
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            AlibabaCloud.OpenApiClient.Models.OpenApiRequest request = new AlibabaCloud.OpenApiClient.Models.OpenApiRequest
            {
                Query = AlibabaCloud.OpenApiUtil.Client.Query(queries),
            };
            // サンプルコードをコピーして実行する場合は、操作のレスポンスを表示するコードを記述します。
            // レスポンスは MAP タイプで、レスポンスボディ、レスポンスヘッダー、HTTP ステータスコードが含まれます。
            var response = client.CallApi(params_, request, runtime);
            Console.WriteLine(response["statusCode"]);
        }
    }
}

例: RESTful スタイル (ROA スタイル) の API 操作の呼び出し

この例では、Container Service for Kubernetes (ACK) の DescribeClustersV1 操作を呼び出して、操作の汎用呼び出しを行う方法を示します。

namespace AlibabaCloud.SDK.Sample
{
    public class Sample 
    {

        public static AlibabaCloud.OpenApiClient.Client CreateClient()
        {
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                // 必須。コードランタイム環境で次の環境変数が設定されていることを確認します: ALIBABA_CLOUD_ACCESS_KEY_ID。
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // 必須。コードランタイム環境で次の環境変数が設定されていることを確認します: ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
            };
            config.Endpoint = "cs.cn-hangzhou.aliyuncs.com";
            return new AlibabaCloud.OpenApiClient.Client(config);
        }

        public static AlibabaCloud.OpenApiClient.Models.Params CreateApiInfo()
        {
            AlibabaCloud.OpenApiClient.Models.Params params_ = new AlibabaCloud.OpenApiClient.Models.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",
            };
            return params_;
        }

        public static void Main(string[] args)
        {
            AlibabaCloud.OpenApiClient.Client client = CreateClient();
            AlibabaCloud.OpenApiClient.Models.Params params_ = CreateApiInfo();
            // ランタイムオプション
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            AlibabaCloud.OpenApiClient.Models.OpenApiRequest request = new AlibabaCloud.OpenApiClient.Models.OpenApiRequest();
            // 必要に応じて、操作のレスポンスを表示するコードを記述します。
            // レスポンスは MAP タイプで、レスポンスボディ、レスポンスヘッダー、HTTP ステータスコードが含まれます。
            var response = client.CallApi(params_, request, runtime);
            Console.WriteLine(response["statusCode"]);
        }
    }
}