gosunilgo / apigee-client-php-pkg
用于连接到 Apigee Edge API 的客户端库。
Requires
- php: ^8.0 || ^8.1
- ext-json: *
- ext-openssl: *
- ext-reflection: *
- fightbulc/moment: ^1.26
- firebase/php-jwt: ^6.0
- league/period: ^4.12
- php-http/client-common: ^2.0
- php-http/client-implementation: ^1.0
- php-http/discovery: ^1.6.0
- php-http/httplug: ^2.0
- php-http/message: ^1.13
- php-http/message-factory: ^1.0
- phpdocumentor/reflection-docblock: ^3.0 || ^4.0 || ^5.0
- psr/http-message: ^1.0
- symfony/options-resolver: ^4.0
- symfony/property-access: ^4.4.9
- symfony/property-info: ^4.0
- symfony/serializer: ^4.4
Requires (Dev)
- dms/phpunit-arraysubset-asserts: ^0.4.0
- friendsofphp/php-cs-fixer: ^2.19
- fzaninotto/faker: ^1.7
- guzzlehttp/psr7: ^1.0
- league/flysystem: ^1.0
- limedeck/phpunit-detailed-printer: ^6
- monolog/monolog: ^1.23
- php-http/guzzle6-adapter: ^2.0
- php-http/mock-client: ^1.1.0
- phpmetrics/phpmetrics: ^2.7
- phpunit/phpunit: ^9.5
- sebastian/comparator: ^4.0.5
- symfony/cache: ~3.4 || ~4.0
- vimeo/psalm: ^3.18.2
Conflicts
- guzzlehttp/guzzle: <6.1.0
- guzzlehttp/psr7: <1.4.1
- phpdocumentor/type-resolver: <0.2.1
This package is not auto-updated.
Last update: 2024-10-02 23:20:01 UTC
README
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 队列 报告任何问题、问题或反馈。
贡献
我们非常愿意接受对这个项目的贡献,有关更多详细信息,请参阅 此项目的贡献指南。