0Pricing
PHP Academy · Pelajaran

Menangani Respons dan Error API

Periksa kode status HTTP, tangani error, dan uraikan muatan API.

Menangani Respons dan Error API adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

Memeriksa Kode Status HTTP

Selalu periksa kode status HTTP sebelum memproses isi respons.

<?php
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($statusCode !== 200) {
    throw new RuntimeException("API error: HTTP $statusCode");
}

Mengurai Respons JSON

Urai isi JSON dan tangani kesalahan penguraian.

<?php
$body = curl_exec($ch);
$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
// $data is now a PHP array

Isi Respons Kesalahan

API sering mengembalikan detail kesalahan di dalam isi respons, bahkan untuk respons 4xx/5xx. Selalu urai dan catat isi respons ketika terjadi kesalahan.

<?php
if ($statusCode >= 400) {
    $err = json_decode($body, true);
    $msg = $err["message"] ?? "Unknown API error";
    throw new RuntimeException("API $statusCode: $msg");
}

Kesalahan Transportasi cURL

Kesalahan jaringan (kegagalan DNS, batas waktu) berbeda dari kesalahan HTTP. Periksa curl_errno() terlebih dahulu, lalu status HTTP.

<?php
if (curl_errno($ch)) {
    throw new RuntimeException("Transport error: ".curl_error($ch));
}

Membungkusnya dalam Fungsi Pembantu

Enkapsulasikan penyiapan, eksekusi, dan penanganan kesalahan cURL dalam fungsi yang dapat digunakan kembali.

<?php
function httpGet(string $url, string $token): array {
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER     => ["Authorization: Bearer $token"],
        CURLOPT_TIMEOUT        => 15,
    ]);
    $body   = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $errno  = curl_errno($ch);
    curl_close($ch);
    if ($errno) throw new RuntimeException(curl_strerror($errno));
    if ($status >= 400) throw new RuntimeException("HTTP $status");
    return json_decode($body, true, 512, JSON_THROW_ON_ERROR);
}

Logika Percobaan Ulang

Untuk kesalahan sementara (503 Service Unavailable, batas waktu), terapkan jeda eksponensial dengan batas jumlah percobaan ulang.

<?php
$maxRetries = 3;
for ($attempt = 0; $attempt < $maxRetries; $attempt++) {
    try {
        $data = httpGet($url, $token);
        break;
    } catch (RuntimeException $e) {
        if ($attempt === $maxRetries - 1) throw $e;
        sleep(2 ** $attempt);
    }
}

Header Pembatasan Laju

Banyak API menyertakan header pembatasan laju: X-RateLimit-Remaining dan X-RateLimit-Reset. Bacalah header tersebut agar Anda tidak mencapai batas.

<?php
curl_setopt($ch, CURLOPT_HEADER, true);
// Parse headers from the response string

Penyimpanan Respons dalam Cache

Simpan respons API dalam cache untuk menghindari pemanggilan jaringan yang tidak perlu. Simpan respons di Redis atau APCu dengan TTL yang sesuai dengan persyaratan kesegaran data.

Pencatatan Pemanggilan API

Catat URL permintaan, metode, kode status, dan latensi untuk membantu proses penelusuran kesalahan serta memantau kesehatan API di lingkungan produksi.

Batas Waktu sebagai Kesalahan

Batas waktu cURL (CURLE_OPERATION_TIMEDOUT) adalah kesalahan transportasi, bukan kesalahan HTTP. Tangani kondisi ini secara eksplisit.

Kesalahan Sertifikat SSL

Kegagalan validasi sertifikat (CURLE_SSL_CACERT) berarti sertifikat server tidak tepercaya. Perbarui bundel CA Anda, dan jangan pernah menonaktifkan verifikasi.

Ringkasan

Selalu periksa errno cURL terlebih dahulu, lalu status HTTP. Urai isi respons kesalahan. Bungkus logika dalam fungsi yang dapat digunakan kembali. Terapkan percobaan ulang untuk kegagalan sementara.

Pemeriksaan Singkat

Mana yang harus diperiksa terlebih dahulu: errno cURL atau status HTTP?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menangani Respons dan Error API” gratis?

Ya — teks lengkap “Menangani Respons dan Error API” 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 “Menangani Respons dan Error API”?

Periksa kode status HTTP, tangani error, dan uraikan muatan API. 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 3 dari 4.

Berapa lama pelajaran “Menangani Respons dan Error API” 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

  1. Encoding dan Decoding JSON
  2. Membuat Permintaan HTTP dengan cURL
  3. Menangani Respons dan Error API
  4. Membangun Klien API Sederhana
← Kembali ke PHP Academy