Halo calon Programmer masa depan. Kali ini saya akan membahas bagaimana cara membuat Rest Client atau aplikasi yang digunakan untuk mengakses Rest API dari suatu server dengan http request. Semisal jika kita ingin menampilkan data produk atau barang kita di facebook atau instagram secara otomatis saat menambah data barang baru di aplikasi web kita.


Aplikasi kita (Input data) ---> API ---> Facebook/Instagram

Aplikasi RestClient disini bisa digunakan untuk membuat chatbot aatu aplikasi prakiraan cuaca dengan google API. Apa itu Rest API ? silahkan baca artikel saya sebelumnya Rest API dengan PHP. Baik kali ini saya akan berbagi tutorial cara membuat aplikasi rest client dengan bahasa pemrograman PHP Menggunakan library cURL. cURL merupakan suatu aplikasi yang digunakan untuk mengakses suatu URL dengan menggunakan command line. Di bahasa pemrograman PHP itu sendiri cURL terbungkus dalam suatu library yang bisa digunakan sesuai dengan kebutuhan

  • Persiapan

Pertama pastikan dulu bahwa library cURL sudah aktif dalam web server kita. untuk melihatnya buatlah file dengan nama phpinfo.php dimana isinya adalah sebagai berikut ini

<?php
 phpinfo();
?>

kemudian bukalah file tersebut di browser anda dengan dengan mengetikan http://localhost/phpinfo.php. pastikan web server dalam kondisi running. Geser kebawah, Jika ada tulisan dibawah ini berarti library cURL sudah aktif dan bisa digunakan

selanjutnya buatlah folder dalam directory htdocs anda dengan nama folder rest-client sebagai folder kerja kita. Untuk rest servernya saya menggunakan rest api yang kita buat sebelumnya (baca: Rest API dengan PHP) atau anda bisa clone atau download di github saya pada https://github.com/rudyekoprasetya/BelajarRestAPIPHP  

  • Operasi Tampil Data

buatlah file config.php dalam folder kerja kita dengan isi sebagai berikut ini

<?php
	function http_request_get($url) {
	    // persiapkan curl
	    $ch = curl_init(); 

	    // set url 
	    curl_setopt($ch, CURLOPT_URL, $url);

	    // konversi hasil ke string
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

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

	    // tutup curl 
	    curl_close($ch);      

	    // mengembalikan hasil curl
	    return $output;
	}

	function http_request_post($url,$data) {
		// persiapkan curl
	    $ch = curl_init(); 

	    // set url 
	    curl_setopt($ch, CURLOPT_URL, $url);

	    // konversi hasil ke string
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

	    //untuk metode POST
	    curl_setopt($ch, CURLOPT_POST, true);

	    //untuk data yang dikirim
	    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

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

	    // tutup curl 
	    curl_close($ch);      

	    // mengembalikan hasil curl
	    return $output;
	}
?>

untuk penggunaan cURL saya menggunakan suatu fungsi dimana nati kita bisa panggil berulang-ulang. fungsi tersebut saya berikan nama http_request_get untuk metode GET sedangkan fungsi http_request_post untuk metode POST. untuk nama fungsi bisa berbeda dengan contoh. Selanjutnya kita buat file tampil_data.php dengan code sebagai berikut

<?php
	//memasukan file config
	include("config.php");

	//url untuk lihat data
	$url="http://localhost/rest-api/tampil_data.php";

	//menyimpan hasil dalam variabel
	$data=http_request_get($url);

	//konversi data json ke array
	$hasil=json_decode($data,true);

?>

<!DOCTYPE html>
<html>
<head>
	<title>Tampil Data dengan cURL</title>
</head>
<body>
	<h1>Data Pengurus dengan RestAPI</h1>
	<table border="2">
		<tr>
			<th>ID</th>
			<th>NAMA</th>
			<th>ALAMAT</th>
			<th>GENDER</th>
			<th>GAJI</th>
		</tr>
		<?php foreach($hasil as $row) { ?>
		<tr>
			<td><?php echo $row['id']; ?></td>
			<td><?php echo $row['nama']; ?></td>
			<td><?php echo $row['alamat']; ?></td>
			<td><?php echo $row['gender']; ?></td>
			<td><?php echo $row['gaji']; ?></td>
		</tr>
		<?php }  ?>
	</table>

</body>
</html>

Untuk ujicoba silahkan akses file tersebut dengan browser anda http://localhost/rest-client/tampil_data.php maka akan muncul tampilan dibawah ini

  • Operasi Input Data

Selanjutnya kita akan membuat operasi tambah datanya. buatlah file tambah_data.php dengan code sebagai berikut

<?php
	include("config.php");

	//jika tombol simpan di klik
	if(isset($_POST['simpan'])) {

		$id=$_POST['id'];
		$nama=$_POST['nama'];
		$alamat=$_POST['alamat'];
		$gender=$_POST['gender'];
		$gaji=$_POST['gaji'];

		//membuat data array data yang kirim
		$data=array(
			'id' => $id,
			'nama' => $nama,
			'alamat' => $alamat,
			'gender' => $gender,
			'gaji' => $gaji
		);

		//url untuk tambah data
		$url="http://localhost/rest-api/tambah_data.php";

		//menyimpan hasil dalam variabel
		$hasil=http_request_post($url,$data);
		//memunculkan pesan 
		var_dump($hasil);
	}
?>
<!DOCTYPE html>
<html>
<head>
	<title>Tambah Data dengan cURL</title>
</head>
<body>
	<h1>Input Data Pengurus</h1>
<form method="POST">
	<table>
		<tr>
			<td>ID</td>
			<td><input type="text" name="id"></td>
		</tr>
		<tr>
			<td>NAMA</td>
			<td><input type="text" name="nama"></td>
		</tr>
		<tr>
			<td>ALAMAT</td>
			<td><textarea name="alamat"></textarea></td>
		</tr>
		<tr>
			<td>GENDER</td>
			<td>
			<select name="gender">
				<option value="L">Laki-laki</option>
				<option value="P">Perempuan</option>
			</select>
			</td>
		</tr>
		<tr>
			<td>GAJI</td>
			<td><input type="number" name="gaji"></td>
		</tr>
		<tr>
			<td></td>
			<td>
				<button type="submit" name="simpan">SIMPAN</button>
				<button type="reset">BATAL</button>
			</td>
		</tr>
	</table>
</form>
</body>
</html>

lakukan ujicoba dengan mengakses http://localhost/rest-client/tambah_data.php jika berhasil tampilan sebagai berikut

  • Operasi Ubah Data

Sebelumnya kita ubah sedikit file tampil_data.php kita dengan menambahkan link edit berikut adalah codenya

<table border="2">
		<tr>
			<th>ID</th>
			<th>NAMA</th>
			<th>ALAMAT</th>
			<th>GENDER</th>
			<th>GAJI</th>
			<th>AKSI</th>
		</tr>
		<?php foreach($hasil as $row) { ?>
		<tr>
			<td><?php echo $row['id']; ?></td>
			<td><?php echo $row['nama']; ?></td>
			<td><?php echo $row['alamat']; ?></td>
			<td><?php echo $row['gender']; ?></td>
			<td><?php echo $row['gaji']; ?></td>
			<td>
				<a href="edit_data.php?id=<?php echo $row['id']; ?>">Edit</a>
			</td>
		</tr>
		<?php }  ?>
	</table>

Berikut adalah hasilnya

selanjutnya buatlah file edit_data.php

<?php
	//memasukan file config
	include("config.php");

	//ambil parameter ID dar URL
	$id=$_GET['id'];

	//url untuk lihat data berdasarkan id yang dipilih
	$url="http://localhost/rest-api/tampil_data.php?id=".$id;

	//menyimpan hasil dalam variabel
	$data=http_request_get($url);

	//konversi data json ke array
	$hasil=json_decode($data,true);
?>

<!DOCTYPE html>
<html>
<head>
	<title>Ubah Data dengan cURL</title>
</head>
<body>
	<h1>Ubah Data Pengurus</h1>

	<form method="POST" action="ubah_data.php">

<?php foreach ($hasil as $row) { ?>

	<table>
		<tr>
			<td>ID</td>
			<td><input type="text" name="id" value="<?php echo $row['id']; ?>"></td>
		</tr>
		<tr>
			<td>NAMA</td>
			<td><input type="text" name="nama" value="<?php echo $row['nama']; ?>"></td>
		</tr>
		<tr>
			<td>ALAMAT</td>
			<td><textarea name="alamat"><?php echo $row['alamat']; ?></textarea></td>
		</tr>
		<tr>
			<td>GENDER</td>
			<td>
			<select name="gender">
				<option value="L">Laki-laki</option>
				<option value="P">Perempuan</option>
			</select>
			</td>
		</tr>
		<tr>
			<td>GAJI</td>
			<td><input type="number" name="gaji" value="<?php echo $row['gaji']; ?>"></td>
		</tr>
		<tr>
			<td></td>
			<td>
				<button type="submit" name="ubah">UBAH</button>
				<button type="reset">BATAL</button>
			</td>
		</tr>
	</table>

<?php } ?>

</form>

</body>
</html>

Berikut adalah hasil dari file tersebut jika di klik salah satu data

Berikutnya buatlah file ubah_data.php untuk aksi simpan datanya

<?php
	include("config.php");

	//jika tombol ubah di klik
	if(isset($_POST['ubah'])) {

		$id=$_POST['id'];
		$nama=$_POST['nama'];
		$alamat=$_POST['alamat'];
		$gender=$_POST['gender'];
		$gaji=$_POST['gaji'];

		//membuat data array data yang kirim
		$data=array(
			'id' => $id,
			'nama' => $nama,
			'alamat' => $alamat,
			'gender' => $gender,
			'gaji' => $gaji
		);

		//url untuk ubah data
		$url="http://localhost/rest-api/ubah_data.php";

		//menyimpan hasil dalam variabel
		$hasil=http_request_post($url,$data);
		
		//memunculkan pesan 
		var_dump($hasil);
	}
?>

Jika kita mengubah salah satu data dan berhasil maka akan muncul pesan seperti dibawah ini

  • Operasi Hapus Data

ubahlah file tampil_data.php dengan untuk link hapus data

<table border="2">
		<tr>
			<th>ID</th>
			<th>NAMA</th>
			<th>ALAMAT</th>
			<th>GENDER</th>
			<th>GAJI</th>
			<th>AKSI</th>
		</tr>
		<?php foreach($hasil as $row) { ?>
		<tr>
			<td><?php echo $row['id']; ?></td>
			<td><?php echo $row['nama']; ?></td>
			<td><?php echo $row['alamat']; ?></td>
			<td><?php echo $row['gender']; ?></td>
			<td><?php echo $row['gaji']; ?></td>
			<td>
				<a href="edit_data.php?id=<?php echo $row['id']; ?>">Edit</a>
				<a href="hapus_data.php?id=<?php echo $row['id']; ?>">Hapus</a>
			</td>
		</tr>
		<?php }  ?>
	</table>

Maka tampilannya akan berubah menjadi berikut ini

Kemudian buatlah file hapus_data.php dengan code sebagai berikut

<?php
	//memasukan file config
	include("config.php");

	//ambil parameter ID dar URL
	$id=$_GET['id'];

	//url untuk hapus data
	$url="http://localhost/rest-api/hapus_data.php?id=".$id;

	//menyimpan hasil dalam variabel
	$data=http_request_get($url);

	//konversi data json ke array
	$hasil=json_decode($data,true);

	//memunculkan pesan 
	var_dump($hasil);

?>

Pada tampil data cobalah klik link hapus pada salah satu data, jika muncul pesan dibawah ini maka operasi hapus data berhasil

Demikian tutorial membuat rest client dengan menggunakan PHP dan cURL jika ada pertanyaan debugging bisa menuliskan komentar dibawah ini