clarus-it / http-client
Contoh HTTP client untuk keperluan mengakses API ke aplikasi-aplikasi buatan Clarus IT.
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-11-20 09:54:26 UTC
README
Library HTTP client dalam bahasa pemrograman PHP untuk keperluan mengakses API ke aplikasi-aplikasi buatan Clarus IT. Library ini berlaku sebagai reference implementation dan contoh bagi yang perlu membuat implementasi untuk bahasa pemrograman lain.
Instalasi
Untuk menginstall library ini, bisa menggunakan composer:
composer require clarus-it/http-client
Client Library
Penggunaan
Berikut contoh penggunaan 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
mengimplementasikan Symfony HttpClientInterface
, jadi bisa
digunakan dengan cara yang sama dengan Symfony HttpClient.
Algoritma
Algoritma operasional HTTP client ini adalah sebagai berikut.
Catatan: Bagian pengecekan apakah token kedaluarsa sebenarnya boleh saja tidak diimplementasikan. Konsekuensinya, library hanya dapat tahu token sudah kedaluarsa setelah melakukan request ke server.
Pembuatan Implementasi Dalam Bahasa Pemrograman Lain
Pada bahasa pemrograman lain seharusnya tidak sulit untuk mengimplementasikan HTTP client ini. Untuk contoh, bisa melihat pada file ClarusHttpClient.php dan mengadaptasikan ke bahasa pemrograman lain tersebut.
Untuk keperluan parsing JWT, bisa menggunakan library yang ada di bahasa
pemrograman yang digunakan. Daftar library bisa dilihat di
jwt.io. Yang diperlukan untuk kasus ini adalah
library yang dapat melakukan exp
check.
Pagination
Ada endpoint yang memuat banyak data. Dalam kasus tersebut, biasanya akan menggunakan sistem pagination. Satu halaman akan memberikan beberapa data, beserta informasi halaman berikutnya. Dengan informasi tersebut, kita bisa mengambil data selanjutnya sampai tidak ada data lagi.
Halaman berikut dapat diketahui melalui header Link
dengan rel=next
. Library
ini memberikan PaginationIterator
yang dapat digunakan oleh client untuk
melakukan iterasi terhadap endpoint dengan sistem pagination.
Penggunaan
Berikut contoh penggunaan 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 }
Algoritma
Algoritma iterator pagination adalah sebagai berikut.
Pembuatan Implementasi Dalam Bahasa Pemrograman Lain
Untuk melakukan implementasi dalam bahasa pemrograman lain, diperlukan library untuk melakukan parsing header link. Berikut adalah beberapa library yang dapat digunakan untuk beberapa bahasa pemrograman populer:
- parse-link-header (Javascript)
- javax.ws.rs.core.Link (Java)
- graviton/link-header-rel-parser (PHP)
- link-header-parser (Ruby)
- linkheader-parser (Python)
Lisensi
MIT