gosunilgo/apigee-client-php-pkg

用于连接到 Apigee Edge API 的客户端库。

This package is not auto-updated.

Last update: 2024-10-02 23:20:01 UTC


README

Build Status Code Coverage Latest Stable Version Total Downloads Minimum PHP Version License

PHP 的 Apigee API 客户端库使得开发调用 Apigee Edge Management API 的 PHP 客户端变得简单。PHP 的 Apigee API 客户端库允许您使用对象与 API 交互,而不是直接编码来处理 HTTP 请求和响应调用。

具体来说,PHP 的 Apigee API 客户端库提供了以下类别的 Apigee Edge Management API 访问

有关 Apigee Edge Management API 的更多信息,请参阅 Apigee 文档中的 使用 API Edge Management API 的入门

使用 HTTPlug 库构建的 PHP 的 Apigee API 客户端库提供了一个与 HTTP 客户端实现无关的库。您可以选择最适合项目需求的客户端。

如果您需要 PHP < 7.1 或 Monetization API 支持,请安装较旧的 edge-php-sdk 版本。我们计划在不久的将来将 Monetization API 支持添加到此库中。

私有云的 Edge

在私有云安装中,核心持久服务 (CPS) 不可用。PHP API 客户端支持在列出 API 端点时进行分页(例如: 列出开发者)。如果 CPS 不可用,PHP API 客户端将模拟分页功能,并触发一个 E_USER_NOTICE 级别的错误,以便开发者知道分页结果是 PHP 生成的,而不是 Management API 服务器生成的。可以通过多种方式抑制此通知。您可以通过更改 PHP 的 error_reporting 配置来抑制 所有 E_NOTICE 级别的错误,例如将其值更改为 E_ALL | ~E_NOTICE。您还可以通过将 APIGEE_EDGE_PHP_CLIENT_SUPPRESS_CPS_SIMULATION_NOTICE 环境变量的值设置为假值来仅抑制由 PHP API 客户端生成的通知,例如: APIGEE_EDGE_PHP_CLIENT_SUPPRESS_CPS_SIMULATION_NOTICE=1

支持 Apigee 混合组织:GA 发布

已将 Apigee 混合 API 的支持添加到此库中,并已将其视为生产就绪。如果您遇到任何问题,请将问题添加到我们的 GitHub 问题队列

安装客户端库

在安装 PHP 的 Apigee API 客户端库之前,您必须安装一个 HTTP 客户端或适配器。有关可用客户端和适配器的完整列表,请参阅 PHP-HTTP 文档中的 客户端 & 适配器

要使用 Guzzle 6 安装客户端库,请输入以下命令

$ composer require php-http/guzzle6-adapter:^1.1.1
$ composer require apigee/apigee-client-php

用法示例

基本 API 用法

<?php

use Apigee\Edge\Api\Management\Controller\DeveloperController;
use Apigee\Edge\Api\Management\Entity\Developer;
use Apigee\Edge\Exception\ApiException;
use Apigee\Edge\Exception\ClientErrorException;
use Apigee\Edge\Exception\ServerErrorException;
use Apigee\Edge\Client;
use Http\Message\Authentication\BasicAuth;

include_once 'vendor/autoload.php';

$username = 'my-email-address@example.com';
$password = 'my-secure-password';
$organization = 'my-organization';

$auth = new BasicAuth($username, $password);
// Initialize a client and use basic authentication for all API calls.
$client = new Client($auth);

// Initialize a controller for making API calls, for example a developer controller to working with developer entities.
$ec = new DeveloperController($organization, $client);

try {
    /** @var \Apigee\Edge\Api\Management\Entity\Developer $entity */
    $entity = $ec->load('developer1@example.com');
    $entity->setEmail('developer2@example.com');
    $ec->update($entity);
    // Some setters on entities are intentionally marked as @internal because the underlying entity properties can not
    // be changed on the entity level. Those must be modified by using dedicated API calls.
    // So instead of this:
    $entity->setStatus(Developer::STATUS_INACTIVE);
    // You should use this:
    $ec->setStatus($entity->id(), Developer::STATUS_INACTIVE);
} catch (ClientErrorException $e) {
    // HTTP code >= 400 and < 500. Ex.: 401 Unauthorised.
    if ($e->getEdgeErrorCode()) {
        print $e->getEdgeErrorCode();
    } else {
        print $e;
    }
} catch (ServerErrorException $e) {
    // HTTP code >= 500 and < 600. Ex.: 500 Server error.
} catch (ApiException $e) {
    // Anything else, because this is the parent class of all the above.
}

高级示例

单元测试

如果没有设置,请使用 Composer 设置测试套件

$ composer install --dev

使用 PHPUnit 运行它

$ composer test

测试新更改不需要 Apigee Edge 连接。默认情况下,单元测试使用 offline-test-data 文件夹中的内容来使测试更快、更简单。如果您想使用真实的 Apigee Edge 实例运行单元测试,您必须指定以下环境变量(不带括号)

APIGEE_EDGE_PHP_CLIENT_API_CLIENT=\Apigee\Edge\Tests\Test\Client
APIGEE_EDGE_PHP_CLIENT_HTTP_CLIENT=\Http\Adapter\Guzzle6\Client
APIGEE_EDGE_PHP_CLIENT_BASIC_AUTH_USER=[YOUR-EMAIL-ADDRESS@HOST.COM]
APIGEE_EDGE_PHP_CLIENT_BASIC_AUTH_PASSWORD=[PASSWORD]
APIGEE_EDGE_PHP_CLIENT_ORGANIZATION=[ORGANIZATION]
APIGEE_EDGE_PHP_CLIENT_ENVIRONMENT=[ENVIRONMENT]
# If test organization does not support CPS.
APIGEE_EDGE_PHP_CLIENT_SUPPRESS_CPS_SIMULATION_NOTICE=1

设置这些环境变量的方法有多种,但可能最简单的是从 phpunit.xml.dist 文件创建一个副本到 phpunit.xml,并在 元素 内取消注释 env 元素。

您还可以创建并使用自己的数据集。如果您想使用自己的离线测试数据集,只需定义 APIGEE_EDGE_PHP_CLIENT_OFFLINE_TEST_DATA_FOLDER 环境变量,并将其值设置为您的测试数据集的父文件夹。

PS.:当使用离线测试数据集时,某些单元测试无法执行,这些测试将自动标记为跳过。

我们的向后兼容性(BC)承诺

此库遵循 语义版本控制 策略。这意味着只有主要版本(如 3.0、4.0 等)允许破坏向后兼容性,我们将尽最大努力保持这种状态。PHP API 客户端必须与支持的 Apigee Edge API 的最新版本兼容。如您所见,几乎每个类都至少在此库中实现了至少一个接口,因此,我们建议在基于此库构建东西时依赖接口定义而不是具体类。此外,在扩展我们的类时,请优先使用封装而不是继承。如果支持的 Apigee Edge API 的更改无法在不更改接口的情况下在 PHP API 客户端中实现,我们将从这个库发布一个新的主要版本。

支持

此项目由 Google 支持,它将 Drupal 8 与 Apigee Edge 连接起来。使用我们 项目的 issue 队列 报告任何问题、问题或反馈。

贡献

我们非常愿意接受对这个项目的贡献,有关更多详细信息,请参阅 此项目的贡献指南