Pendahuluan
Dalam pengembangan website modern, penggunaan API sudah menjadi kebutuhan penting. API memungkinkan sebuah website mengambil data dari sistem lain, seperti data berita, produk, user, transaksi, ranking game, status server, hingga informasi dashboard.
Salah satu cara paling populer untuk mengambil data API di PHP adalah menggunakan cURL. Dengan cURL, kita bisa melakukan request ke endpoint API, menerima response dalam format JSON, lalu menampilkan data tersebut ke halaman website.
Pada artikel ini, kita akan membahas secara lengkap cara mengambil data API menggunakan PHP cURL, mulai dari konsep dasar, contoh kode, cara membaca JSON, menangani error, hingga tips keamanan saat menampilkan data API ke website.
Apa Itu API?
API adalah singkatan dari Application Programming Interface. Secara sederhana, API adalah penghubung antara satu aplikasi dengan aplikasi lain.
Contohnya, sebuah website memiliki endpoint API seperti berikut:
Code:
https://example.com/api/news
Ketika endpoint tersebut diakses, server akan mengembalikan data dalam format JSON seperti berikut:
JSON:
{
"status": "ok",
"data": [
{
"title": "Update Terbaru Telah Dirilis",
"description": "Patch terbaru sudah tersedia untuk semua pemain.",
"created_at": "2026-07-02"
},
{
"title": "Event Spesial Mingguan",
"description": "Nikmati bonus EXP dan reward menarik minggu ini.",
"created_at": "2026-07-01"
}
]
}
Data JSON tersebut kemudian bisa diproses menggunakan PHP dan ditampilkan ke halaman website.
Apa Itu PHP cURL?
cURL adalah fitur di PHP yang digunakan untuk melakukan request ke URL tertentu. Dengan cURL, kita bisa mengambil data dari API, mengirim data ke server lain, menggunakan token authorization, atau melakukan integrasi antar sistem.
Dalam tutorial ini, kita akan menggunakan cURL untuk mengambil data API menggunakan metode GET request.
Metode GET biasanya digunakan untuk mengambil data tanpa mengubah isi data di server.
Kapan Perlu Menggunakan PHP cURL?
PHP cURL sangat berguna ketika kamu ingin membuat fitur seperti:
- Menampilkan daftar berita dari API.
- Mengambil data produk dari sistem lain.
- Menampilkan ranking user atau player.
- Mengecek status server.
- Mengambil data transaksi.
- Menghubungkan website dengan aplikasi eksternal.
- Membuat dashboard yang mengambil data dari beberapa sumber.
Dengan kata lain, cURL adalah kurir kecil yang rajin mondar-mandir membawa data dari server lain ke website kamu. Bedanya, dia tidak pernah minta ongkir.
Persiapan Sebelum Mengambil Data API
Sebelum menggunakan cURL, pastikan server atau hosting kamu sudah mendukung PHP dan ekstensi cURL sudah aktif.
Untuk mengeceknya, buat file PHP seperti berikut:
PHP:
<?php
phpinfo();
Kemudian buka file tersebut melalui browser dan cari bagian cURL.
Jika menggunakan Linux Ubuntu atau Debian, kamu bisa menginstall cURL untuk PHP dengan perintah berikut:
Bash:
sudo apt install php-curl
sudo systemctl restart apache2
Jika menggunakan Nginx dan PHP-FPM, gunakan perintah berikut:
Bash:
sudo apt install php-curl
sudo systemctl restart php-fpm
sudo systemctl restart nginx
Contoh Cara Mengambil Data API Menggunakan PHP cURL
Berikut contoh dasar untuk mengambil data API menggunakan PHP cURL:
PHP:
<?php
$apiUrl = 'https://example.com/api/news';
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $apiUrl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 15,
CURLOPT_HTTPHEADER => array(
'Accept: application/json'
)
));
$response = curl_exec($ch);
$error = curl_error($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($error) {
die('Curl Error: ' . htmlspecialchars($error, ENT_QUOTES, 'UTF-8'));
}
if ($httpCode != 200) {
die('HTTP Error: ' . htmlspecialchars($httpCode, ENT_QUOTES, 'UTF-8'));
}
$result = json_decode($response, true);
if (!$result) {
die('Data API tidak valid.');
}
echo '<pre>';
print_r($result);
echo '</pre>';
Kode di atas akan mengambil data dari API, membaca response dari server, lalu menampilkannya dalam bentuk array PHP.
Penjelasan Kode PHP cURL
1. Menentukan Endpoint API
PHP:
$apiUrl = 'https://example.com/api/news';
Variabel $apiUrl berisi alamat endpoint API yang ingin diakses.
Endpoint API adalah URL yang menyediakan data dari server lain.
2. Memulai cURL
PHP:
$ch = curl_init();
Fungsi curl_init() digunakan untuk memulai sesi cURL.
3. Mengatur Opsi cURL
PHP:
curl_setopt_array($ch, array(
CURLOPT_URL => $apiUrl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 15,
CURLOPT_HTTPHEADER => array(
'Accept: application/json'
)
));
Penjelasan opsi yang digunakan:
- CURLOPT_URL: Menentukan URL API tujuan.
- CURLOPT_RETURNTRANSFER: Menyimpan response ke variabel.
- CURLOPT_TIMEOUT: Membatasi waktu request.
- CURLOPT_HTTPHEADER: Mengirim header request ke API.
Opsi CURLOPT_RETURNTRANSFER sangat penting karena membuat hasil response API disimpan ke dalam variabel $response.
4. Menjalankan Request API
PHP:
$response = curl_exec($ch);
Fungsi curl_exec() digunakan untuk menjalankan request ke endpoint API.
Jika request berhasil, response dari API akan disimpan ke variabel $response.
5. Mengecek Error dan HTTP Status Code
PHP:
$error = curl_error($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
Bagian ini digunakan untuk mengecek apakah request berhasil atau gagal.
Beberapa HTTP status code yang sering ditemukan saat menggunakan API:
- 200: Request berhasil.
- 400: Request tidak valid.
- 401: Tidak memiliki otorisasi.
- 403: Akses ditolak.
- 404: Endpoint tidak ditemukan.
- 500: Error dari server API.
Dengan mengecek HTTP status code, kita bisa membuat sistem lebih stabil dan mudah di-debug.
6. Mengubah JSON Menjadi Array PHP
PHP:
$result = json_decode($response, true);
Fungsi json_decode() digunakan untuk mengubah data JSON menjadi array PHP.
Parameter true membuat hasil decode menjadi array, bukan object.
Cara Menampilkan Data API ke Website
Setelah data API berhasil diambil, langkah berikutnya adalah menampilkannya ke halaman HTML.
Berikut contoh kode lengkap untuk mengambil data API dan menampilkannya dalam bentuk daftar berita.
PHP:
<?php
$apiUrl = 'https://example.com/api/news';
$newsList = array();
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $apiUrl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 15,
CURLOPT_HTTPHEADER => array(
'Accept: application/json'
)
));
$response = curl_exec($ch);
$error = curl_error($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if (!$error && $httpCode == 200) {
$result = json_decode($response, true);
if ($result && isset($result['status']) && $result['status'] == 'ok') {
if (isset($result['data']) && is_array($result['data'])) {
$newsList = $result['data'];
}
}
}
function e($value)
{
return htmlspecialchars((string) $value, ENT_QUOTES, 'UTF-8');
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Daftar Berita dari API</title>
<meta name="description" content="Contoh cara mengambil data API menggunakan PHP cURL dan menampilkannya ke halaman website.">
</head>
<body>
<h1>Daftar Berita</h1>
<?php if (!empty($newsList)): ?>
```
<?php foreach ($newsList as $news): ?>
<article>
<h2><?php echo e(isset($news['title']) ? $news['title'] : 'Tanpa Judul'); ?></h2>
<?php if (isset($news['description'])): ?>
<p><?php echo e($news['description']); ?></p>
<?php endif; ?>
<?php if (isset($news['created_at'])): ?>
<small>
Dipublikasikan: <?php echo e($news['created_at']); ?>
</small>
<?php endif; ?>
</article>
<hr>
<?php endforeach; ?>
```
<?php else: ?>
```
<p>Belum ada berita tersedia.</p>
```
<?php endif; ?>
</body>
</html>
Kode di atas sudah cukup untuk mengambil data berita dari API dan menampilkannya ke halaman website.
Cara Menangani Error Saat Mengambil Data API
Saat mengambil data dari API, tidak semua request akan selalu berhasil. Karena itu, penting untuk menambahkan error handling.
1. Menangani cURL Error
PHP:
if ($error) {
echo 'Gagal menghubungi API.';
}
Error ini biasanya terjadi karena:
- URL API tidak bisa diakses.
- Server API sedang down.
- Koneksi internet bermasalah.
- DNS bermasalah.
- Firewall memblokir request.
2. Menangani HTTP Error
PHP:
if ($httpCode != 200) {
echo 'API mengembalikan HTTP Code: ' . $httpCode;
}
Dengan cara ini, kamu bisa mengetahui apakah API mengembalikan status berhasil atau error.
3. Menangani JSON Tidak Valid
PHP:
$result = json_decode($response, true);
if (json_last_error() !== JSON_ERROR_NONE) {
echo 'Format JSON dari API tidak valid.';
}
Validasi JSON penting agar website tidak error ketika API mengembalikan response yang tidak sesuai format.
Mengatasi Error 403 Forbidden Saat Mengakses API
Salah satu error yang sering muncul saat mengambil data API adalah 403 Forbidden.
Error 403 berarti request ditolak oleh server API.
Penyebab umum error 403:
- API membutuhkan token.
- IP server tidak diizinkan.
- Header request tidak sesuai.
- Endpoint hanya menerima request dari domain tertentu.
- Server memblokir request tanpa User-Agent.
Salah satu solusi sederhana adalah menambahkan User-Agent pada request cURL.
PHP:
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0');
Contoh penggunaan lengkapnya:
PHP:
curl_setopt_array($ch, array(
CURLOPT_URL => $apiUrl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 15,
CURLOPT_USERAGENT => 'Mozilla/5.0',
CURLOPT_HTTPHEADER => array(
'Accept: application/json'
)
));
Namun, jika API memang membutuhkan token atau whitelist IP, maka solusi terbaik adalah mengikuti aturan akses dari penyedia API.
Mengambil Data API Menggunakan Token Authorization
Beberapa API tidak bisa diakses secara bebas dan membutuhkan token authorization.
Contoh penggunaan Bearer Token pada PHP cURL:
PHP:
<?php
$apiUrl = 'https://example.com/api/news';
$token = 'TOKEN_API_KAMU';
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $apiUrl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 15,
CURLOPT_HTTPHEADER => array(
'Accept: application/json',
'Authorization: Bearer ' . $token
)
));
$response = curl_exec($ch);
curl_close($ch);
Dengan header authorization, server API bisa mengenali bahwa request memiliki izin akses.
Tips Keamanan Saat Menampilkan Data API
Saat menampilkan data dari API ke website, jangan langsung mencetak data mentah tanpa validasi.
Gunakan fungsi escaping untuk mencegah risiko XSS.
PHP:
function e($value)
{
return htmlspecialchars((string) $value, ENT_QUOTES, 'UTF-8');
}
Contoh penggunaan:
PHP:
echo e($news['title']);
Tips keamanan lainnya:
- Jangan tampilkan error teknis mentah ke user.
- Jangan simpan token API di folder publik.
- Gunakan HTTPS untuk endpoint API.
- Validasi struktur response sebelum digunakan.
- Batasi timeout request agar halaman tidak menggantung.
- Gunakan cache jika data API tidak perlu real-time.
- Jangan percaya semua data dari API, walaupun API tersebut milik sendiri.
Data dari API itu seperti tamu yang datang ke rumah. Tetap ramah, tapi jangan langsung kasih kunci lemari server.
Best Practice Menggunakan PHP cURL untuk API
Agar kode lebih aman dan stabil, berikut beberapa best practice saat menggunakan PHP cURL:
- Selalu gunakan CURLOPT_TIMEOUT.
- Selalu cek curl_error().
- Selalu cek HTTP status code.
- Validasi response JSON.
- Gunakan header Accept: application/json.
- Gunakan authorization jika API membutuhkan token.
- Escape semua output sebelum ditampilkan ke HTML.
- Gunakan fallback jika data kosong.
- Gunakan logging untuk mencatat error API.
- Gunakan cache untuk mengurangi beban request.
Dengan menerapkan best practice ini, website akan lebih tahan banting ketika API sedang bermasalah.
Contoh Struktur Response API yang Ideal
Agar lebih mudah diproses oleh PHP, sebaiknya API memiliki struktur response yang konsisten.
Contoh response sukses:
JSON:
{
"status": "ok",
"message": "Data berhasil diambil",
"data": [
{
"title": "Judul Berita",
"description": "Isi singkat berita",
"created_at": "2026-07-02"
}
]
}
Contoh response gagal:
JSON:
{
"status": "error",
"message": "Data tidak ditemukan",
"data": []
}
Struktur seperti ini membuat proses validasi data menjadi lebih mudah.
Kesimpulan
Mengambil data API menggunakan PHP cURL adalah teknik dasar yang sangat penting dalam pengembangan website. Dengan cURL, kamu bisa mengambil data dari endpoint API, membaca response JSON, menangani error, dan menampilkan data tersebut ke halaman website.
Pada tutorial ini, kita sudah membahas:
- Apa itu API.
- Apa itu PHP cURL.
- Cara mengambil data API menggunakan PHP cURL.
- Cara membaca response JSON.
- Cara menampilkan data API ke website.
- Cara menangani error HTTP.
- Cara menggunakan Bearer Token.
- Tips keamanan saat menampilkan data API.
- Best practice penggunaan PHP cURL.
Dengan memahami cara kerja PHP cURL, kamu bisa membuat banyak fitur dinamis, seperti daftar berita, ranking player, status server, data transaksi, dashboard admin, hingga integrasi dengan sistem lain.
PHP cURL adalah salah satu skill kecil yang efeknya besar. Sekali paham, kamu bisa membuat website berbicara dengan banyak sistem lain tanpa harus menulis mantra kuno di terminal tengah malam.
FAQ
Apa fungsi cURL di PHP?
cURL di PHP digunakan untuk melakukan request ke URL tertentu, seperti mengambil data API, mengirim data, atau mengakses layanan eksternal.
Apa itu JSON dalam API?
JSON adalah format data yang sering digunakan oleh API karena ringan, mudah dibaca, dan mudah diproses oleh berbagai bahasa pemrograman.
Apakah PHP cURL bisa digunakan untuk API token?
Ya. PHP cURL bisa mengirim token melalui header, misalnya menggunakan Authorization: Bearer TOKEN.
Kenapa API mengembalikan error 403?
Error 403 biasanya terjadi karena akses ditolak. Penyebabnya bisa karena token tidak valid, IP tidak diizinkan, header kurang lengkap, atau endpoint dibatasi.
Apakah data API harus divalidasi sebelum ditampilkan?
Ya. Data API sebaiknya selalu divalidasi dan di-escape sebelum ditampilkan ke HTML untuk mengurangi risiko error dan celah keamanan.
Apakah PHP cURL cocok untuk website production?
Ya, PHP cURL cocok digunakan di production selama menerapkan error handling, timeout, validasi response, dan keamanan output dengan benar.