friendsofapi/boilerplate

优秀的API客户端基础

dev-master 2017-05-21 18:02 UTC

This package is auto-updated.

Last update: 2024-08-25 07:41:17 UTC


README

Latest Version Build Status Code Coverage Quality Score Total Downloads

安装

通过Composer

$ composer require friendsofapi/boilerplate

用法

$apiClient = new ApiClient();
$total = $apiClient->stats()->total();
echo $total->getCount(); // 22;

示例

此仓库包含一个针对FakeTwitter的示例API客户端。FakeTwitter的API有以下端点。

开发

API通常分为类别,称为资源。在你的实现中,你也应该反映这些类别,例如通过在Api/中有它们自己的类。让我们以我们的情况中的Api/Stats为例。任何调用的响应应该是一个位于Model/Stats/X中的对象,例如Model/Stats/Total

注水器

终端用户选择要使用的注水器。默认注水器应返回领域对象。

请求构建器

请求构建器在必要时创建一个PSR-7请求,并使用多部分流。如果API不需要多部分流,您应删除RequestBuilder并替换为RequestFactory

领域对象作为参数

如果API要求特定端点有大量参数,则可能会诱使您创建一个领域对象并将其作为参数传递给该端点。

public function create(string $username, Tweet $model) {
    // send the Tweet to Fake Twitter API
    // ...
}

$model = new Tweet();
$model->setMessage('foobar');
$model->addHashTag('stuff');
$model->addHashTag('test');
$model->setLocation('Stockhom/Sweden');
// ...
$api->create('foobar', $model);

然而,此方法不受欢迎,因为创建的推文对象是不必要的开销。它也可能与应用程序开发者的推文对象冲突。此外,请求通常没有与响应相同的参数,因此在大多数情况下无法使用相同的对象进行两者。您不应强迫用户使用您的推文对象,而应使用数组传递参数到请求。

public function create(string $username, array $param) {
    // send the Tweet to Fake Twitter API
    // ...
}

$param['message' => 'foobar'];
$param['hashtags' => ['stuff', 'test']];
$param['location' => 'Stockhom/Sweden'];
// ...
$api->create('foobar', $param);

如果您的参数复杂,您可以为推文提供推文构建器。由于它是构建器,因此流畅接口在这里可能是一个好主意。但请注意,流畅接口是邪恶的

public function create(string $username, array $param) {
    // send the Tweet to Fake Twitter API
    // ...
}

$builder = (new TweetBuilder())
    ->setMessage('foobar');
    ->addHashTag('stuff');
    ->addHashTag('test');
    ->setLocation('Stockhom/Sweden')
;

// ...
$api->create('foobar', $builder->build());

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。