PHPackages                             clarus-it/http-client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. clarus-it/http-client

ActiveLibrary[HTTP &amp; Networking](/categories/http)

clarus-it/http-client
=====================

Contoh HTTP client untuk keperluan mengakses API ke aplikasi-aplikasi buatan Clarus IT.

v0.6.0(2y ago)05[1 PRs](https://github.com/clarus-it/http-client/pulls)MITPHPPHP &gt;=8.2

Since Mar 5Pushed 1y ago1 watchersCompare

[ Source](https://github.com/clarus-it/http-client)[ Packagist](https://packagist.org/packages/clarus-it/http-client)[ Docs](https://clarus-it.co.id)[ RSS](/packages/clarus-it-http-client/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (9)Versions (4)Used By (0)

clarus-it/http-client
=====================

[](#clarus-ithttp-client)

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
---------

[](#instalasi)

Untuk menginstall library ini, bisa menggunakan composer:

```
composer require clarus-it/http-client
```

Client Library
--------------

[](#client-library)

### Penggunaan

[](#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)

Algoritma operasional HTTP client ini adalah sebagai berikut.

[![Diagram proses](docs/proses.svg?raw=true "Title")](docs/proses.svg?raw=true)

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

[](#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](./src/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](https://jwt.io/libraries). Yang diperlukan untuk kasus ini adalah library yang dapat melakukan `exp` check.

Pagination
----------

[](#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

[](#penggunaan-1)

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-1)

Algoritma iterator pagination adalah sebagai berikut.

[![Diagram proses](docs/pagination.svg?raw=true "Title")](docs/pagination.svg?raw=true)

### Pembuatan Implementasi Dalam Bahasa Pemrograman Lain

[](#pembuatan-implementasi-dalam-bahasa-pemrograman-lain-1)

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](https://github.com/thlorenz/parse-link-header) (Javascript)
- [javax.ws.rs.core.Link](https://docs.oracle.com/javaee%2F7%2Fapi%2F%2F/javax/ws/rs/core/Link.html) (Java)
- [graviton/link-header-rel-parser](https://github.com/libgraviton/link-header-rel-parser) (PHP)
- [link-header-parser](https://github.com/jgarber623/link-header-parser-ruby) (Ruby)
- [linkheader-parser](https://pypi.org/project/linkheader-parser/) (Python)

Lisensi
-------

[](#lisensi)

MIT

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance27

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

803d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/13d0eed333cf2f0d552e9a4d0ca1c6a8fc0be0506bbc5e7516f6985b17b86043?d=identicon)[priyadi](/maintainers/priyadi)

---

Top Contributors

[![priyadi](https://avatars.githubusercontent.com/u/1102197?v=4)](https://github.com/priyadi "priyadi (11 commits)")

---

Tags

httpphpjwtapisymfonyhttp clientAuthenticationtokenapi-keyclarus

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Psalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/clarus-it-http-client/health.svg)

```
[![Health](https://phpackages.com/badges/clarus-it-http-client/health.svg)](https://phpackages.com/packages/clarus-it-http-client)
```

###  Alternatives

[lexik/jwt-authentication-bundle

This bundle provides JWT authentication for your Symfony REST API

2.6k58.7M210](/packages/lexik-jwt-authentication-bundle)[aphiria/aphiria

The Aphiria framework

1427.7k2](/packages/aphiria-aphiria)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
