apigee / apigee-client-php
连接到 Apigee Edge API 的客户端库。
Requires
- php: ~8.1 || ~8.2 || ~8.3
- ext-json: *
- ext-openssl: *
- ext-reflection: *
- fightbulc/moment: ^1.26
- firebase/php-jwt: ^6.0
- league/period: ^5.2
- php-http/client-common: ^2.0
- php-http/client-implementation: ^1.0
- php-http/discovery: ^1.18
- php-http/httplug: ^2.0
- php-http/message: ^1.13
- php-http/message-factory: ^1.0
- phpdocumentor/reflection-docblock: ^5.0
- psr/http-message: ^1.0 || ^2.0
- symfony/options-resolver: ^6.4.9
- symfony/property-access: ^6.4.9
- symfony/property-info: ^6.4.9
- symfony/serializer: ^6.4.9
Requires (Dev)
- dms/phpunit-arraysubset-asserts: ^0.4.0
- friendsofphp/php-cs-fixer: ^3.22
- fzaninotto/faker: ^1.7
- guzzlehttp/psr7: ^2.5
- league/flysystem: ^1.0
- limedeck/phpunit-detailed-printer: ^6
- monolog/monolog: ^1.23
- php-http/guzzle7-adapter: ^1.0
- php-http/mock-client: ^1.1.0
- phpmetrics/phpmetrics: ^2.7
- phpunit/phpunit: ^9.6
- sebastian/comparator: ^4.0.5
- symfony/cache: ^6.4.9
- vimeo/psalm: ^5.20
- 3.x-dev
- 3.0.7
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.x-dev
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.19
- 2.0.18
- 2.0.17
- 2.0.16
- 2.0.15
- 2.0.14
- 2.0.13
- 2.0.12
- 2.0.11
- 2.0.10
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 2.0.0-alpha6
- 2.0.0-alpha5
- 2.0.0-alpha4
- 2.0.0-alpha3
- 2.0.0-alpha2
- 2.0.0-alpha1
- dev-feature-ngmint
This package is auto-updated.
Last update: 2024-09-17 10:45:30 UTC
README
Apigee API 客户端库为 PHP 提供了一个简单的接口,用于开发调用 Apigee Edge/X 管理 API 的 PHP 客户端。使用 Apigee API 客户端库,您可以使用对象而不是直接编写代码来处理 HTTP 请求和响应调用。
具体来说,Apigee API 客户端库为 PHP 提供以下类别的 Apigee Edge 和 Apigee 管理API访问权限
Apigee Edge
Apigee
有关 Apigee Edge 和 Apigee 管理API的更多信息,请参阅 Apigee 文档中的开始使用 Apigee Edge 管理API和开始使用 Apigee 管理API。
使用 HTTPlug 库构建的 Apigee API 客户端库为 PHP 提供了一个与 HTTP 客户端实现无关的库。您可以选择最适合您项目需求客户端。
如果您需要 PHP < 7.1 或货币化 API 支持,请安装较旧的 edge-php-sdk 版本。我们计划在不久的将来将货币化 API 支持添加到这个库中。
私有云的 Edge
在私有云安装中,核心持久服务 (CPS) 不可用。PHP API 客户端支持在列出 API 端点时进行分页(例如:列出开发者)。如果 CPS 不可用,PHP API 客户端将模拟分页功能,并触发一个 E_USER_NOTICE 级别的错误,以告知开发者分页结果是 PHP 生成的,而不是管理 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 问题队列。
安装客户端库
在安装 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客户端中实现,我们将从这个库中发布一个新的主要版本。
支持
此项目(连接Drupal 8与Apigee Edge)由Google支持。使用我们项目的 issue 队列报告任何问题、问题或反馈。
贡献
我们非常愿意接受对此项目的贡献,请参阅此项目的贡献指南以获取更多详细信息。