hussainweb/drupal-api-client

Drupal.org API访问的便捷封装库,基于Guzzle

v2.1.1 2023-10-23 13:18 UTC

This package is auto-updated.

Last update: 2024-09-23 15:06:54 UTC


README

Latest Version Software License Build Status Total Downloads

这是一个基于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类时传递它。

有各种请求类用于检索不同类型的实体和实体列表。许多实体请求类都有相应的列表请求类,例如CommentRequestCommentCollectionRequest

用户代理

根据对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,但有一个讨论在适配器中添加对该接口的支持