此包已被废弃且不再维护。作者建议使用 traderinteractive/tol-api 包。

PHP 客户端库用于 RESTful API

v5.0.2 2023-06-09 20:24 UTC

README

Build Status Scrutinizer Code Quality Coverage Status

Latest Stable Version Latest Unstable Version License

Total Downloads Daily Downloads Monthly Downloads

这是一个用于类似 TraderOnline API 的 RESTful API 的 PHP 客户端。

要求

此 API 客户端需要 PHP 7.3 或更高版本,并使用 composer 安装其他 PHP 依赖项。有关更多详细信息,请参阅 composer 规范

贡献时,需要访问用于测试的运行中的 MongoDB 数据库。有关更多详细信息,请参阅 贡献指南

安装

可以使用 composer 在项目中安装 tol-api-php 以供使用。

在您的项目中使用此库的推荐方法是添加一个 composer.json 文件。以下内容将 tol-api-php 添加为依赖项

composer require traderinteractive/tol-api

基本用法

基本的 guzzle 客户端,没有缓存或自动分页处理,使用起来很方便。

要实例化一个客户端,你需要 guzzle 适配器、客户端 ID、客户端密钥和 API URL。此客户端应与 TOL API 等 API 一起工作。

use TraderInteractive\Api;
$apiAdapter = new Api\GuzzleAdapter();
$auth = Api\Authentication::createClientCredentials(
    'clientId',
    'clientSecret'
)
$apiClient = new Api\Client(
    $apiAdapter,
    $auth,
    'https://baseApiUrl/v1'
);

然后你可以进行如下索引请求,尽管建议您查看下面的 集合 部分,以便利用自动分页处理。以下是如何获取单个页面的项目的示例。

<li>
<?php
$response = $apiClient->index(
    'resourceName',
    array('aFilter' => '5')
);

if ($response->getStatusCode() !== 200) {
    throw new Exception('Non successful index call');
}

$body = json_decode($response->getBody(), true);
$total = $body['pagination']['total'];

// Loop over the first page of items
foreach ($body['result'] as $item) {
    echo "<li>{$item['foo']}</li>\n";
}
?>
</ul>

要从 API 获取单个项目,可以使用 get 方法

// Get item 1234
$response = $apiClient->get('resourceName', '1234');

if ($response->getStatusCode() !== 200) {
    throw new Exception('Failed to fetch item 1234');
}

$item = json_decode($response->getBody(), true);
echo "Fetched item {$item['foo']}\n";

要创建新项目,可以使用 post 方法

$response = $apiClient->post(
    'resourceName',
    array(
        'foo' => array(
            'bar' => 'boo',
            'bing' => '5',
        ),
    )
);

if ($response->getStatusCode() !== 201) {
    throw new Exception('Failed to create item foo');
}

$item = json_decode($response->getBody(), true);
echo $item['result']['foo'];

要更新项目,可以使用 put 方法

// Set item 1234's foo to bar.
$response = $apiClient->put(
    'resourceName',
    '1234',
    array('bing' => array('foo' => 'bar'))
);

if ($response->getStatusCode() !== 200) {
    throw new Exception('Failed to update item 1234');
}

要删除项目,可以使用 delete 方法

// Delete item 1234.
$response = $apiClient->delete('resourceName', '1234');

if ($response->getStatusCode() !== 204) {
    throw new Exception('Failed to delete item 1234');
}

要执行异步请求,请使用 start*()end() 方法

$handleOne = $apiClient->startGet('resourceName', '1234');
$handleTwo = $apiClient->startGet('resourceName', '5678');

$responseOne = $apiClient->end($handleOne);
$responseTwo = $apiClient->end($handleTwo);

if ($responseOne->getStatusCode() !== 200) {
    throw new Exception('Failed to fetch item 1234');
}

if ($responseTwo->getStatusCode() !== 200) {
    throw new Exception('Failed to fetch item 5678');
}

$itemOne = json_decode($responseOne->getBody(), true);
$itemTwo = json_decode($responseTwo->getBody(), true);

echo "Fetched item {$itemOne['foo']}\n";
echo "Fetched item {$itemTwo['foo']}\n";

缓存

此库允许使用 PSR-16 SimpleCache 实现。

集合

这是进行索引请求的首选方式,这样您就不必自己处理(或忘记处理!)分页。使用 API 客户端使用此迭代器非常简单。以下是一个创建项目下拉列表的代码片段。**警告**:在迭代过程中不应更新集合中的项目,因为这可能会更改分页。

<ul>
<?php
$items = new \TraderInteractive\Api\Collection(
    $apiClient,
    'resourceName',
    array('aFilter' => '5')
);
foreach ($items as $item) {
    echo "<li>{$item['foo']}</li>\n";
}
?>
</ul>

贡献

如果您想贡献,请使用我们的构建过程进行任何更改,并在构建通过后,在GitHub上向我们发送拉取请求!

还有一个基于 DockerFig 配置,该配置将为数据库启动Docker容器,在Docker容器内执行构建,然后终止所有操作。这是一种构建应用程序的简单方法

fig run build