Menggunakan cURL untuk GET dan POST ke API di PHP

Melalui fungsi bawaan PHP curl_exec kita bisa memuat data yang tersedia lewat protokol HTTP bahkan bertukar informasi ke protokol FTP. di artikel ini saya pakai cURL untuk request GET dan POST ke REST API, plus cara menyertakan token Bearer yang biasanya wajib buat API yang pakai JWT.
Video : Menggunakan cURL untuk GET dan POST ke API di PHP
Simak video pembahasan cara Menggunakan cURL untuk GET dan POST ke API di PHP berikut ini.
Menggunakan HTTP verb curl di PHP
menggunakan fungsi cURL bawaan PHP biasanya untuk kebutuhan integrasi dengan API external service, contohnya menghubungkan ke sistem pembayaran, mengambil data dari API cuaca, sampai cek ongkir. intinya dengan cURL kita bisa “browsing” dari dalam kode, bahkan bisa juga untuk mengumpulkan data alias scraping.
Menggunakan HTTP GET
request GET dipakai untuk mengambil data. berikut contoh memanggil endpoint GET yang mengembalikan JSON:
$authorId = "12345";
$url = "https://reqres.in/api/users/{$authorId}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$authorJSON = json_decode($response, true);
Penjelasan :
$ch = curl_init();: melakukan inisialisasi curlcurl_setopt($ch, CURLOPT_URL, $url);: mengatur URL tujuan requestcurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);: penting! tanpa inicurl_execlangsung mencetak respons ke layar, bukan mengembalikannya ke variabel. dengantrue, hasilnya ditampung ke$response$response = curl_exec($ch);: menjalankan request sampai dapat respons, hasilnya ditampung ke$responsecurl_getinfo($ch, CURLINFO_HTTP_CODE);: mengambil kode status HTTP (200, 404, 500, dst) untuk cek apakah request suksescurl_close($ch);: menutup curljson_decode($response, true);: mengubah JSON jadi array PHP supaya mudah diolah. parameter keduatruemembuat hasilnya array assoc, bukan object
Menggunakan HTTP POST dengan JSON
untuk mengirim data, misalnya login atau menambah data baru, pakai POST. body-nya biasanya JSON:
$url = "https://reqres.in/api/login";
$data = [
'email' => '[email protected]',
'password' => 'cityslicka'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Accept: application/json'
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$result = json_decode($response, true);
Penjelasan :
curl_setopt($ch, CURLOPT_POST, true);: mengubah method jadi POSTcurl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));: isi body request. karena API-nya berformat JSON, datanya di-encode dulu denganjson_encode()curl_setopt($ch, CURLOPT_HTTPHEADER, [...]);: menambahkan header, di sini memberitahu server bahwa body berupa JSON
Menambahkan header Authorization Bearer
kebanyakan API yang pakai JWT mengharuskan header Authorization: Bearer <token>. cara menambahkannya tinggal gabung ke CURLOPT_HTTPHEADER:
$token = "TOKEN_JWT_ANDA";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $token,
'Accept: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
Menangani error
kalau curl_exec mengembalikan false, berarti terjadi kegagalan di level koneksi (bukan error HTTP). untuk tahu penyebabnya, pakai curl_error():
$response = curl_exec($ch);
if ($response === false) {
echo 'cURL error: ' . curl_error($ch);
} else {
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo 'HTTP status: ' . $httpCode;
}
curl_close($ch);
perlu diingat, error HTTP 4xx/5xx tetap menghasilkan respons string (bukan false), jadi cek CURLINFO_HTTP_CODE dulu untuk memastikan responsnya memang sukses sebelum diolah.
untuk penjelasan lebih dalam soal method GET dan POST di API, baca juga Perbedaan PATCH dan PUT dan HTTP method lainnya di API HTTP.
Pertanyaan yang Sering Diajukan
Apa itu cURL di PHP?
cURL adalah library bawaan PHP untuk melakukan request HTTP lewat kode. Fungsinya mirip browsing, tapi dilakukan dari dalam program, misalnya mengambil data dari REST API, cek status pembayaran, atau integrasi sistem lain.
Bagaimana cara kirim POST JSON pakai cURL PHP?
Set CURLOPT_POST jadi true, CURLOPT_POSTFIELDS diisi string JSON hasil json_encode(), dan set header Content-Type: application/json lewat CURLOPT_HTTPHEADER.
Cara menambahkan header Authorization Bearer token di cURL PHP?
Tambahkan pada CURLOPT_HTTPHEADER, misalnya array("Authorization: Bearer TOKEN_ANDA", "Accept: application/json"). Biasanya dibutuhkan untuk API yang pakai JWT.
Kenapa cURL mengembalikan false atau respons kosong?
Biasanya karena SSL error, URL tidak valid, atau timeout. Gunakan curl_error($ch) untuk melihat pesan errornya, dan curl_errno($ch) untuk kode errornya saat proses debugging.

