集成SDK
在调用OpenAPI时,建议采用在项目中集成SDK的方式。使用SDK可以简化开发流程,实现功能的快速集成,同时有效降低维护成本。本文将详细介绍如何在项目中安装SDK以及使用SDK开发。
环境要求
PHP >= 5.5
安装SDK
由于在安装云产品PHP V1.0 SDK时会自动安装核心SDK,所以在实际应用过程中仅需要安装云产品SDK即可。
云产品SDK
云产品的V1.0 SDK主要包括的是OpenAPI的Request以及Response对象,还包含了返回值序列化逻辑的Unmarshaller对象。以云产品ECS的V1.0 SDK的为例,引入产品SDK依赖的方式如下:
# ECS V1.0 SDK
composer require alibabacloud/ecs
V1.0 SDK的命名方式为alibabacloud/${产品名}
的方式命名。开发者也可以通过SDK 中心来查看具体产品的V1.0 SDK信息。
核心SDK
核心SDK主要包含在调用OpenAPI时所需的Client对象、签名逻辑以及异常处理等功能。当您使用泛化调用或者单独安装某一个版本的核心SDK时,可以执行以下安装命令:
composer require alibabacloud/client
最新版本信息请参见alibabacloud/client - Packagist。
使用SDK
本文将以调用ECSDescribeInstances接口为例,为您分步介绍如何使用V1.0 SDK。
1. 初始化请求客户端
所有的OpenAPI均通过核心SDK提供的Client发起调用,因此在调用OpenAPI之前,需要先进行客户端初始化。这里以使用AK初始化方式为例,更多客户端初始化方式请参见管理访问凭据。
示例采用读取环境变量的方式获取凭证,运行代码前需配置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
。具体操作,请参见在Linux、macOS和Windows系统配置环境变量。
use AlibabaCloud\Client\AlibabaCloud;
// Please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set.
AlibabaCloud::accessKeyClient(getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'))
->regionId('<REGION_ID>')
->asDefaultClient();
2. 构造OpenAPI请求参数对象
可以使用云产品SDK中提供的请求参数对象封装请求参数。
use AlibabaCloud\Ecs\Ecs;
// 构造请求参数
$request = Ecs::v20140526()
->describeInstances() // 创建对应API的请求参数对象
->withInstanceIds(json_encode(["i-bp1dXXXXXXXXXXXX"])) // 请求参数InstanceIds,请根据实际情况填写
->withPageSize(10) // 请求参数PageSize,请根据实际情况填写
->withPageNumber(1); // 请求参数PageNumber,请根据实际情况填写
3. 发起请求
调用request()
函数发起请求。
$result = $request
->debug(true) // 开启调试会输出详细信息
->request(); // 执行请求
print_r($result->toArray()); // 打印API返回结果
4. 异常处理
在调用OpenAPI时如果发生异常,您可以通过捕获ServerException和ClientException来获取错误信息。
相关文档
关于SDK的高阶配置,例如代理配置、超时配置等,请参见进阶配置。
如何创建AK,请参见创建AccessKey。