clarus-it / http-client
用于访问Clarus IT应用程序API的HTTP客户端示例。
v0.6.0
2024-03-06 05:07 UTC
Requires
- php: >=8.2
- lcobucci/jwt: ^5.2
- symfony/http-client: ^6.4 || ^7.0
Requires (Dev)
- ekino/phpstan-banned-code: ^1.0
- phpstan/phpstan: ^1.10.50
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- phpunit/phpunit: ^10.5
- psalm/plugin-phpunit: ^0.18.4
- vimeo/psalm: ^5.18
This package is auto-updated.
Last update: 2024-09-20 09:31:47 UTC
README
PHP语言的HTTP客户端库,用于访问Clarus IT应用程序的API。该库作为参考实现和示例,供需要为其他编程语言创建实现的人员使用。
安装
要安装此库,可以使用composer
composer require clarus-it/http-client
客户端库
用法
以下为ClarusHttpClient
的示例用法:
// baseUri adalah base dari endpoint API, termasuk akhiran /api/ $baseUri = 'https://example.com/api/'; // apiKey adalah api key yang digenerate oleh aplikasi $apiKey = '4e85a111bf36d87fea86f6452f5084a1bb7820b9605a18b217e3950eb5ea12c1'; // instantiasi objek ClarusHttpClient dengan parameter apiKey dan baseUri $client = new ClarusHttpClient($apiKey, $baseUri); // melakukan request GET ke https://example.com/api/ping // client akan secara otomatis melakukan login apabila belum login, atau jika // tokennya sudah kedaluarsa $response = $client->request('GET', 'ping'); // mendapatkan hasilnya sebagai array $result = $response->toArray();
ClarusHttpClient
实现了Symfony的HttpClientInterface
,因此可以以与Symfony HttpClient相同的方式使用。
算法
该HTTP客户端的算法操作如下。
备注:检查token是否已过期的部分实际上可以不实现。结果是,库只能在向服务器发送请求后才知道token已过期。
在另一种编程语言中创建实现
在另一种编程语言中实现HTTP客户端通常不会很困难。例如,可以查看文件ClarusHttpClient.php并将其适应到其他编程语言。
用于解析JWT的库
分页
存在包含大量数据的端点。在这种情况下,通常将使用分页系统。一页将提供一些数据以及有关下一页的信息。使用这些信息,我们可以获取下一页的数据,直到没有更多数据为止。
下一页可以通过包含rel=next
的Link
头部知道。该库提供了PaginationIterator
,客户端可以使用它来迭代使用分页系统的端点。
用法
以下为PaginationIterator
的示例用法:
$client = // client yang sudah diinisialisasi, lihat contoh di atas $endpoint = '/api/foo/01902fd6-e555-47eb-4761-fc2e9e48b2b5'; $iterator = new PaginationIterator($client, $endpoint); foreach ($iterator as $item) { // $item adalah data yang diterima dari endpoint berbentuk array }
算法
分页迭代器的算法如下。
在另一种编程语言中创建实现
在另一种编程语言中实现时,需要解析链接头部的库。以下是一些可用于流行编程语言的库:
- parse-link-header (JavaScript)
- javax.ws.rs.core.Link (Java)
- graviton/link-header-rel-parser (PHP)
- link-header-parser (Ruby)
- linkheader-parser (Python)
许可证
MIT