Membangun Klien API Sederhana
Bungkus pemanggilan cURL dalam class klien API PHP yang dapat digunakan kembali.
Membangun Klien API Sederhana adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.
Mengapa cURL Perlu Dibungkus?
Kelas klien API khusus memusatkan autentikasi, URL dasar, penanganan kesalahan, dan pencatatan—sehingga kode boilerplate yang berulang di seluruh basis kode dapat dihindari.
Kerangka Kelas Klien
Klien API minimal dengan URL dasar dan token autentikasi.
<?php
class ApiClient {
public function __construct(
private string $baseUrl,
private string $token
) {}
private function request(string $method, string $path, array $data = []): array {
$ch = curl_init($this->baseUrl.$path);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer ".$this->token,
"Content-Type: application/json",
"Accept: application/json",
],
]);
if (!empty($data)) {
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
}
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) throw new RuntimeException("API error $status: $body");
return json_decode($body, true, 512, JSON_THROW_ON_ERROR);
}
}Metode GET dan POST
Sediakan metode kemudahan yang meneruskan pemanggilan ke metode privat request().
<?php
public function get(string $path): array {
return $this->request("GET", $path);
}
public function post(string $path, array $body): array {
return $this->request("POST", $path, $body);
}Menggunakan Klien
Buat instans dan panggil metode bertipe, bukan cURL mentah.
<?php
$client = new ApiClient("https://api.example.com", $apiToken);
$users = $client->get("/v1/users");
$user = $client->post("/v1/users", ["name" => "Alice", "email" => "alice@example.com"]);Parameter String Kueri
Buat string kueri dengan http_build_query().
<?php
public function get(string $path, array $params = []): array {
$qs = $params ? "?".http_build_query($params) : "";
return $this->request("GET", $path.$qs);
}
// Usage:
$users = $client->get("/v1/users", ["page" => 1, "limit" => 20]);Pembantu Paginasi
Tambahkan pembantu untuk mengumpulkan semua halaman dari API berpaginasi secara otomatis.
<?php
public function paginate(string $path): array {
$all = [];
$page = 1;
do {
$res = $this->get($path, ["page" => $page++]);
$all = array_merge($all, $res["data"]);
} while ($res["has_more"] ?? false);
return $all;
}Menyimpan Respons dalam Cache
Suntikkan lapisan cache untuk menghindari permintaan yang tidak perlu.
<?php
public function getCached(string $path, int $ttl = 60): array {
$key = "api:".md5($path);
if (apcu_exists($key)) return apcu_fetch($key);
$data = $this->get($path);
apcu_store($key, $data, $ttl);
return $data;
}Pencatatan
Tambahkan pencatat PSR-3 untuk mencatat setiap permintaan dan respons guna membantu penelusuran kesalahan.
<?php
public function __construct(
private string $baseUrl,
private string $token,
private ?\Psr\Log\LoggerInterface $logger = null
) {}Menguji Klien
Dalam pengujian unit, gantikan cURL dengan penangan HTTP tiruan (misalnya Guzzle MockHandler) agar pengujian berjalan tanpa pemanggilan jaringan nyata.
Guzzle sebagai Alternatif
Untuk penggunaan produksi, pertimbangkan Guzzle (composer require guzzlehttp/guzzle), yang menyediakan middleware, permintaan asinkron, dan API yang matang.
Opsi HTTP_FOUNDATION
Symfony HttpClient (symfony/http-client) adalah alternatif unggulan lainnya dengan antarmuka yang bersih dan dukungan asinkron kelas satu.
Ringkasan
Membungkus cURL dalam sebuah kelas mengurangi duplikasi, memusatkan penanganan kesalahan, dan mempermudah pengujian. Sediakan metode bertipe (get, post) di atas verba HTTP mentah.
Pemeriksaan Singkat
Fungsi PHP mana yang membuat string kueri URL?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Membangun Klien API Sederhana” gratis?
Ya — teks lengkap “Membangun Klien API Sederhana” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Membangun Klien API Sederhana”?
Bungkus pemanggilan cURL dalam class klien API PHP yang dapat digunakan kembali. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai PHP Academy?
Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Membangun Klien API Sederhana” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?
Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Encoding dan Decoding JSON
- Membuat Permintaan HTTP dengan cURL
- Menangani Respons dan Error API
- Membangun Klien API Sederhana