traderinteractive / tol-api
PHP 客户端库用于 REST API
Requires
- php: ^7.3 || ^8.0
- ext-curl: *
- ext-json: *
- lib-curl: >=7.15
- fig/http-message-util: ^1.1
- guzzlehttp/guzzle: ^7.0
- psr/http-message: ^1.0
- psr/simple-cache: ^1.0
- subjective-php/psr-cache-helper: ^2.0
- traderinteractive/util: ^4.0
Requires (Dev)
- helmich/mongomock: ^2.5
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.2
- subjective-php/psr-cache-mongodb: ^3.0
Suggests
- subjective-php/psr-cache-mongodb: Used for Caching with Mongo
This package is auto-updated.
Last update: 2024-09-09 23:31:31 UTC
README
这是一个用于 REST API(如 TraderOnline API)的 PHP 客户端。
要求
此 API 客户端需要 PHP 7.3 或更高版本,并使用 composer 安装其他 PHP 依赖项。有关详细信息,请参阅composer 规范。
在贡献时,需要访问一个可用的 mongo 数据库进行测试。有关详细信息,请参阅贡献指南。
安装
tol-api-php 可以使用 composer 安装到您的项目中以供使用。
在您的项目中使用此库的推荐方法是添加一个 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 上向我们发送拉取请求!
还有一个基于 docker 的 fig 配置,它将启动数据库的 docker 容器,在 docker 容器中执行构建,然后终止一切。这是构建应用程序的简单方法
fig run build