hussainweb / drupal-api-client
Drupal.org API访问的便捷封装库,基于Guzzle
Requires
- php: >=8.0
- ext-json: *
- guzzlehttp/psr7: ^1.6 || ^2.4
- php-http/client-implementation: ^1.0
- psr/http-client: ^1.0
- psr/http-message: ^1.0 || ^2.0
Requires (Dev)
- http-interop/http-factory-guzzle: ^1.2
- php-http/mock-client: ^1.3
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.0
- rector/rector: ^0.18.3
- squizlabs/php_codesniffer: ^3.5
README
这是一个基于Guzzle 6的简单封装库,用于访问和使用drupal.org提供的API。它是为DruStats构建的,而DruStats是为了在DrupalCon Asia的开发者竞赛中使用的。您可以参考DruStats来了解示例用法。
安装
使用composer安装此包。
composer require hussainweb/drupal-api-client:"^2.0"
Drupal API客户端版本2+不再依赖于Guzzle,它可以与任何实现了HTTPlug兼容的ClientInterface的HTTP客户端一起工作。以下是一个提供者列表。
例如,要使用Guzzle,您需要Guzzle 6适配器。这将安装Guzzle 6。
composer require php-http/guzzle6-adapter
使用方法
此库提供单个客户端和多个请求类,用于向drupal.org API发送请求。要发送请求,创建一个请求对象,并在客户端类上调用getEntity
方法。
use Http\Adapter\Guzzle6\Client as GuzzleAdapter; use Hussainweb\DrupalApi\Client; use Hussainweb\DrupalApi\Request\UserRequest; $config = [ 'timeout' => 2, // 'handler' => ... // ... ]; $adapter = GuzzleAdapter::createWithConfig($config); // Retrieve user with uid 314031. $client = new Client($adapter); $user_request = new UserRequest('314031'); $user = $client->getEntity($user_request);
上面的示例使用Guzzle 6适配器,但任何实现基于php-http的客户端都将有效。构造HTTP客户端,并在构造Hussainweb\DrupalApi\Client
类时传递它。
有各种请求类用于检索不同类型的实体和实体列表。许多实体请求类都有相应的列表请求类,例如CommentRequest
和CommentCollectionRequest
。
用户代理
根据对Drupal.org API的负责任使用,设置用户代理头部以指示您的应用程序非常重要。您可以使用Request
类上的静态属性一次性设置此请求。
Request::$userAgent = 'Drupal Statistics Collector';
您只需这样做一次,因为此用户代理将应用于所有子请求。请参阅\Hussainweb\DrupalApi\Tests\Request\RequestTest::testRequestUserAgent
中的测试以验证行为。
关于HTTP客户端实现的说明
如上所述,Drupal API客户端版本2+不再依赖于Guzzle,但任何提供php-http客户端实现的HTTP客户端。这是一个PSR-18兼容的HTTP客户端接口,您可以在HTTPlug上了解更多信息。
由于PSR-18已在不同的提供者psr/http-client-implementation中实现,此客户端可能不久将转移到那里。目前,几乎所有支持HTTPlug接口的客户端也支持PSR-18接口,您现在就可以使用该客户端。唯一的显著例外是Guzzle 7,但有一个讨论在适配器中添加对该接口的支持。