Apa Itu cURL Dan Cara Menggunakannya

cURL memungkinkan developer untuk melakukan transfer atau menerima data melalui HTTP protokol, FT...
Penulis
Admin
Kategori
Website
Estimasi
5 menit baca
Dilihat
1.5K
Posting
18 Dec 2021
Apa Itu cURL Dan Cara Menggunakannya cURL memungkinkan developer untuk melakukan transfer atau menerima data melalui HTTP protokol, FTP maupun TELNET. cURL juga merupakan library yang disediakan PHP maupun bahasa pemrograman lainnya seperti Python, Ruby, dan lainnya. Apa Itu cURL Dan Cara Menggunakannya
2022-11-25

Dalam berkomunikasi dengan resources lain, dibutuhkan beberapa komponen untuk memenuhi hal tersebut, salah satunya adalah cURL. cURL akan membantu developer dalam melakukan komunikasi dengan website lain dengan melalui protokol HTTP, FTP maupun TELNET. cURL sudah tersedia dalam library bahasa pemrograman lainnya seperti Python atau Ruby. Dengan metode ini, website dapat melakukan banyak hal, berbagai fitur canggih bisa mengambil atau mengirim data hanya melalui beberapa baris perintah saja.

 

Apa itu cURL PHP dan Bagaimana Cara Mengunakannya

 

 

1. Apa itu cURL

cURL merupakan singkatan dari client URL yang dulunya bernama HttpGet, cURL adalah library khusus yang digunakan untuk mengirim atau menerima data dari resources lain dengan menggunakan URL.

Library ini dapat dijalankan dalam command line maupun dalam baris script dan biasanya digunakan untuk berinteraksi dengan web services atau API dalam mengambil data-data yang dibutuhkan. Pemahaman cURL sangat penting jika sedang menjalani project web services atau API.

Dan juga library ini sangat disarankan untuk website yang cukup kompleks dalam berinteraksi dengan resources lain dibandingkan dengan menggunakan function file_get_contents.

Meskipun pengunaan cURL cukup bertele-tele dalam setiap baris codenya, library ini justru jauh lebih baik dibandingkan dengan penggunaan pengambilan data bawaan PHP seperti file_get_contents, lihat contoh code dalam file_get_contents berikut:

$content = file_get_contents("https://www.catatanweb.com");

Bisa dilihat, kekurangan dari function file_get_contents adalah tidak dapat menangani error serta tidak memiliki opsi lain, misalnya seperti mengunakan cookie, proxy, menambahkan informasi lainnya yang dibutuhkan, user agent maupun autentikasi.

Selain mengirim dan menerima data, library ini dapat melakukan banyak hal misalnya melakukan login pada Facebook, bahkan bisa mengubah status pada Facebook hanya dengan cURL, selanjutnya adalah dapat melakukan web scraping, pengiriman form, menghapus data, menyimpan data, mengambil data, upload file dan masih banyak lagi. cURL adalah library yang luar biasa untuk melakukan banyak hal dengan berbagai opsi dari permintaan URL.

 

2. Mengenal struktur dasar cURL

Terdapat beberapa struktur dasar yang perlu kalian pahami diantaranya inisialisasi, set opsi, eksekusi, handle dan menutup eksekusi, lihat syntax dibawah ini:

<?php

$url = 'https://www.catatanweb.com';

// inisialisasi
$ch = curl_init();

// mengatur set opsi
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);

// eksekusi
$output = curl_exec($ch);

// menutup eksekusi pada cURL
curl_close($ch);

echo $output;

 

Tidak hanya itu, library ini dapat menambahkan penanganan atau pengecekan error jika hal yang tidak diinginkan terjadi, beberapa skrip tambahan lihat pada script dibawah ini:

<?php

$url = 'https://www.catatanweb.com';

// inisialisasi
$ch = curl_init();

// mengatur set opsi
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);

// eksekusi
$output = curl_exec($ch);

// penanganan error
if ($output === false) {
echo "cURL Error: " . curl_error($ch);
}

// menutup eksekusi pada cURL
curl_close($ch);

echo $output;

Perlu dipahami bahwa untuk menangani syntax pada error, kita perlu mengunakan $output === false untuk perbandingan, bukan seperti ini $output == false, karena kita perlu membedakan dalam menentukan nilai yang berisi kosong dengan nilai yang berisi boolean.

Untuk dari masing-masing penjelasan dari struktur dasar pada cURL, berikut adalah penjelasan singkatnya:

  • Inisialisasi

Inisialisasi yang menandakan fungsi akan dijalankan.

  • Set opsi

Set opsi bertujuan untuk memberikan nilai pada masing-masing opsi untuk mendapatkan atau menerima apa yang ingin kita dapatkan, seperti URL mana yang akan dituju, apakah akan mengunakan proxy, apakah ingin menganti metode lain seperti POST, PUT atau DELETE, apakah membutuhkan informasi dari header dan lain sebagainya.

  • Eksekusi

Fungsi ini akan memberikan hasil yang telah kita tetapkan dalam masing-masing opsi.

  • Handle error

Menghandle atau menangani error pada cURL, lalu memberikan informasi kepada developer tentang error yang terjadi.

  • Close

Digunakan sebagai deklarasi bahwa library sudah tidak digunakan kembali.

Dan yang hebatnya, library ini bisa memberikan beragam informasi dari URL yang dituju hanya dalam satu baris code saja.

curl_getinfo($ch);

Hal ini dapat digunakan untuk berbagai kebutuhan dan mendapatkan informasi tambahan. Nantinya output nilai dari curl_getinfo() ini akan dikembalikan kedalam bentuk array, berikut adalah beberapa informasi tambahan dalam cURL:

  • http_code
  • header_size
  • total_time
  • size_download
  • speed_download
  • ssl_verify_result
  • content_type
  • dan masih banyak lagi

Contoh misalnya, kita akan ingin mendapatkan hasil data dari API yang akan kita tuju, namun kita juga ingin mendapatkan informasi tentang status code pada URL tersebut, untuk mengaktifkan fitur ini, kalian bisa lihat kode dibawah ini:

<?php

$url = 'https://api.catatanweb.com/api/users?output=json&auth=true';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

$status_code = $info['http_code'];
$hasil = json_decode($output);

if($status_code == '200') {
   print_r($hasil);
}

 

menggunakan curl dengan method post

 

3. Mengunakan metode POST dengan cURL

Dalam beberapa form HTML, biasanya pemilik website sudah menetapkan form tersebut dengan mengunakan metode POST, metode ini bertujuan untuk mengirim data melalui HTTP Request. Selain dengan cara tersebut, kita juga dapat menggunakan cURL untuk mengirimkan beberapa data tanpa harus mengisi didalam form HTML yang sudah disediakan.

Metode ini akan mengirim data melalui opsi POST yang sudah ditentukan oleh developer kedalam URL tertentu (server) untuk diproses, kalian bisa lihat contoh kode ibawah ini:

<?php

$url = "https://api.catatanweb.com/api/users/registration";

$post_data = array (
  'username' => 'test', 
  'password' => 'pass', 
    'email' => '[email protected]', 
  'action' => 'Submit'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$response = curl_exec($ch);
curl_close($ch);

$hasil = json_decode($response);

if($hasil->status) {
   echo 'data berhasil ditambah';
} else {
   echo 'data gagal ditambah';
}

 

menggunakan curl dengan method get

 

4. Mengunakan metode GET dengan cURL

Untuk melakukan metode GET, kita hanya bisa mengirim data dengan URL yang berupa query. Sebetulnya simple saja, misalnya ingin menampilkan hasil dari query tertentu didalam google, kalian bisa mencobanya dengan kode berikut:

<?php

$url = 'https://www.google.com/search?q=catatanweb.com';
     
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($curl);
curl_close($curl);

echo $data;

Jika fitur allow_url_fopen tidak diaktifkan, alternatif dengan mengunakan cURL adalah opsi yang tepat.

 

menggunakan curl dengan method put

 

5. Mengunakan metode PUT dengan cURL

Dalam menggunakan metode PUT, sebenarnya hampir sama dengan metode POST, namun yang membedakan adalah pada set opsi yang digunakan. Hal ini bertujuan untuk menentukan jenis metode apa yang digunakan dan secara otomatis menghilangkan metode lainnya seperti POST, lihat contoh kode dibawah ini:

<?php

$url = "https://api.catatanweb.com/api/users/2";

$data = array(
   'nama' => 'test1234', 
   'email' => '[email protected]'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$response = curl_exec($ch);
curl_close($ch);

$hasil = json_decode($response);

if($hasil->status) {
   echo 'data berhasil diperbaharui';
} else {
   echo 'data gagal diperbaharui';
}

Metode PUT ini biasa digunakan untuk memperbaharui data didalam RESTful API, server atau lainnya.

 

menggunakan curl dengan method delete

 

6. Mengunakan metode DELETE dengan cURL

Untuk menggunakan metode ini, tidak jauh berbeda dengan metode lainnya seperti POST atau PUT, hanya merubah set opsi pada jenis nilai yang akan ditentukan. Lihat contoh kode dibawah ini:

<?php

$url = "https://api.catatanweb.com/api/users/2";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$hasil = json_decode($response);

if($hasil->status) {
   echo 'data berhasil dihapus';
} else {
   echo 'data gagal dihapus';
}

Metode ini dapat digunakan pada RESTful API atau server untuk menghapus data yang dipilih secara cepat.

 

7. Mengambil data dari API dengan cURL

Metode ini sering digunakan untuk mengambil data melalui API yang berupa output JSON, yang nantinya dirubah menjadi array untuk diolah kembali. Untuk menjalankan hal ini dengan sempurna dibutuhkan fungsi tambahan yaitu json_decode yang berfungsi untuk mengubah data dari JSON menjadi array, lihat contoh syntax dibawah ini:

<?php

$url = 'https://api.catatanweb.com/api/users?output=json&auth=true';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$jsonData = curl_exec($ch);
curl_close($ch);

$hasil = json_decode($jsonData);
print_r($hasil);

 

Mengunakan metode ini sangat umum digunakan oleh developer dalam berkomunikasi dengan API atau web services yang lebih cepat dan sempurna dengan mengunakan cURL.

 

menggunakan curl dengan fitur multi curl

 

8. Fitur Multi cURL

Multi cURL merupakan salah satu fitur menarik dan canggih lainnya dari library ini. Fitur ini dapat melakukan koneksi kedalam beberapa URL secara bersamaan dan async, dan akan mengeksekusi URL terkait secara berurutan, sehingga permintaan selanjutnya akan ditunda sebelum permintaan pertama sudah menyelesaikan eksekusinya.

Sebagai contoh dari multi cURL ini, kita ambil contoh dari situs resmi PHP:

<?php

$ch_1 = curl_init('https://webservice.one.com/');
$ch_2 = curl_init('https://webservice.two.com/');

curl_setopt($ch_1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch_2, CURLOPT_RETURNTRANSFER, true);

$mh = curl_multi_init();
curl_multi_add_handle($mh, $ch_1);
curl_multi_add_handle($mh, $ch_2);

$running = null;
do {
   curl_multi_exec($mh, $running);
} while ($running);

curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);

$response_1 = curl_multi_getcontent($ch_1);
$response_2 = curl_multi_getcontent($ch_2);

echo "$response_1 $response_2";

Fitur ini sangat cocok untuk mengeksekusi code secara bersamaan tanpa harus membuat ulang kode untuk URL yang berbeda. 

 

Kesimpulan

Dengan mengunakan library ini pada PHP, tentu akan mempercepat proses pengolahan data dalam aplikasi website kalian, cURL juga dapat digunakan dalam banyak hal seperti layanan payment gateway, API, scraping, menambah data, menghapus data dan lain sebagainya.

Share