日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用CommonRequest進行調用

更新時間:

使用 CommonRequest 進行調用介紹。

說明

當您要調用的某個產品的 API 沒有提供 SDK 時,可以采用泛用型的 API 調用方式(CommonRequest)。使用 CommonRequest 調用方式可實現任意 OpenAPI 接口的調用。

CommonRequest 調用特點

CommonRequest 的特點如下:

  1. 輕量:只需 Core 包即可發起調用,無需下載安裝各產品的 SDK。

  2. 簡便:無需更新 SDK 即可調用最新發布的 API。

  3. 快速迭代。

使用 CommonRequest

阿里云產品的 API 有 RPC 和 RESTful 兩種風格,不同風格的 API 的 CommonRequest 的調用方法也不同。

通常 API 參數中包含 Action 參數的是RPC風格,包含 PathPattern 參數的是 RESTful 風格。一般情況下,每個產品內,所有 API 的調用風格是統一的。每個 API 僅支持特定的一種風格調用,傳入錯誤的標識,可能會調用到其他 API,或收到ApiNotFound的錯誤信息。

發起一次 CommonRequest 請求,您需要獲取以下幾個參數的值。您可以在文檔中心各產品的API文檔中獲取以下參數的值。此外,部分產品也可以通過OpenAPI 開發者門戶來獲取API的參數信息。

  • 域名(domain):該產品的服務地址。

  • API版本(version):該API的版本號,格式為 YYYY-MM-DD。

  • 接口信息:要調用的接口名稱。

    • 當調用的 API 為 RPC 風格(大部分阿里云產品 API 為 RPC 風格,如 ECS 和 RDS)時,需要獲取 Action 參數,使用request.ApiName = "<Action>"的方式來指定 API 名稱。

      • 例如 RunInstances 接口,在發起 CommonRequest 請求時,需要使用request.ApiName = "RunInstances"來指定 API 名稱。

    • 當調用的 API 為 RESTful 風格(如容器服務)時,需要獲取 PathPattern 參數,使用request.PathPattern = "<PathPattern>"的方式來指定 RESTful 路徑。

      • 例如容器服務的查看所有集群實例的 API 的 PathPattern 為/clusters,在發起 CommonRequest 請求時,要使用request.PathPattern = "/clusters"指定 RESTful 路徑。

示例:調用RPC風格的API

以下代碼展示了如何使用 CommonRequest 的方式調用 CDN 的 DescribeCdnService 接口:

<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
try {
    $result = AlibabaCloud::rpc()
                          ->product('Cdn')
                          ->version('2014-11-11')
                          ->action('DescribeCdnService')
                          ->method('POST')
                          ->request();
    print_r($result->toArray());
} catch (ClientException $exception) {
    print_r($exception->getErrorMessage());
} catch (ServerException $exception) {
    print_r($exception->getErrorMessage());
}

示例:調用 RESTful(ROA)風格的 API

以下代碼展示了如何使用 CommonRequest 的方式調用容器服務的 DescribeClusterServices 接口:

<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
try {
    $result = AlibabaCloud::roa()
                          ->regionId('cn-hangzhou') // 指定請求的地域,不指定則使用客戶端地域、默認地域。
                          ->product('CS') // 指定產品。
                          ->version('2015-12-15') // 指定產品版本。
                          ->action('DescribeClusterServices') // 指定產品接口。
                          ->serviceCode('cs') // 設置 ServiceCode 以備尋址,非必須。
                          ->endpointType('openAPI') // 設置類型,非必須。
                          ->method('GET') // 指定請求方式。
                          ->host('cs.aliyun.com') // 指定域名則不會尋址,如認證方式為 Bearer Token 的服務則需要指定。
                          ->pathPattern('/clusters/[ClusterId]/services') // 指定 ROA 風格路徑規則。
                          ->withClusterId('123456') // 為路徑中參數賦值,方法名:with + 參數。
                          ->request(); // 發起請求并返回結果對象,請求需要放在設置的最后面。
    print_r($result->toArray());
} catch (ClientException $exception) {
    print_r($exception->getErrorMessage());
} catch (ServerException $exception) {
    print_r($exception->getErrorMessage());
}