Aplikasi web REST API Client Sederhana dengan Codeigniter 3

Nugroho Ardi Sutrisno 22 Februari 2019

Aplikasi web REST API Client Sederhana dengan Codeigniter 3

Pada arsitektur REST, REST server menyediakan resources (sumber daya/data) dan REST client mengakses dan menampilkan resource tersebut untuk penggunaan selanjutnya. Rest client dapat berupa aplikasi web, mobile, maupun desktop.

Untuk memungkinkan komunikasi data antara client dan server, codeigniter mambutuhkan library tambahan berupa library curl. Curl adalah sebuah program yang memungkinan kita memindai data dari atau ke sebuah server. Salah satu library curl yang dapat digunakan adalah library curl dari Phil Sturgeon.

Sebagai contoh penerapan REST API Client pada codeigniter dibawah ini akan dijelaskan langkah-langkah pembuatan REST API Client yang akan memanfaatkan sumber daya dari REST API server yang sebelumnya telah dibuat di Tutorial REST API Server Sederhana dengan Codeigniter 3.

Persiapan

Dalam pembuatan Rest api client ini diperlukan :

  1. Webserver seperti Xampp, Wampp, atau lainnya.
  2. REST API Server yang sebelumnya dibuat pada Tutorial REST API Server Sederhana dengan Codeigniter 3.
  3. Codeigniter 3.1.3 atau versi terbaru yang dapat didownload di https://www.codeigniter.com/download.
  4. Library curl, dapat didownload di https://github.com/philsturgeon/codeigniter-curl untuk versi terbaru, versi yang digunakan disini adalah https://github.com/ardisaurus/ci-curl.

Setelah semua yang diperlukan telah siap, extract Codeigniter dan library curl yang telah didownload, pada hasil extraksi library curl masuk ke folder libraries dan copy file curl.php lalu pindahkan ke direktori codeigniter/application/libraries. Setelah library curl terpasang pada direktori codeigniter lalu pindah direktori codeigniter ke htdocs pada direktori xampp lalu rename folder menjadi rest_ci_client.

Masukan http://127.0.0.1/rest_ci_client/ pada address bar browser anda jika muncul gambar seperti dibawah maka instalasi telah berhasil.

Image

Controller

Buat file php baru dengan nama kontak.php pada direktori rest_ci_client/application/controller

<?php
Class Kontak extends CI_Controller{
    
    var $API ="";
    
    function __construct() {
        parent::__construct();
        $this->API="http://localhost/rest_ci/index.php";
        $this->load->library('session');
        $this->load->library('curl');
        $this->load->helper('form');
        $this->load->helper('url');
    }
    
    // menampilkan data kontak
    function index(){
        $data['datakontak'] = json_decode($this->curl->simple_get($this->API.'/kontak'));
        $this->load->view('kontak/list',$data);
    }
    
    // insert data kontak
    function create(){
        if(isset($_POST['submit'])){
            $data = array(
                'id'       =>  $this->input->post('id'),
                'nama'      =>  $this->input->post('nama'),
                'nomor'=>  $this->input->post('nomor'));
            $insert =  $this->curl->simple_post($this->API.'/kontak', $data, array(CURLOPT_BUFFERSIZE => 10)); 
            if($insert)
            {
                $this->session->set_flashdata('hasil','Insert Data Berhasil');
            }else
            {
               $this->session->set_flashdata('hasil','Insert Data Gagal');
            }
            redirect('kontak');
        }else{
            $this->load->view('kontak/create');
        }
    }
    
    // edit data kontak
    function edit(){
        if(isset($_POST['submit'])){
            $data = array(
                'id'       =>  $this->input->post('id'),
                'nama'      =>  $this->input->post('nama'),
                'nomor'=>  $this->input->post('nomor'));
            $update =  $this->curl->simple_put($this->API.'/kontak', $data, array(CURLOPT_BUFFERSIZE => 10)); 
            if($update)
            {
                $this->session->set_flashdata('hasil','Update Data Berhasil');
            }else
            {
               $this->session->set_flashdata('hasil','Update Data Gagal');
            }
            redirect('kontak');
        }else{
            $params = array('id'=>  $this->uri->segment(3));
            $data['datakontak'] = json_decode($this->curl->simple_get($this->API.'/kontak',$params));
            $this->load->view('kontak/edit',$data);
        }
    }
    
    // delete data kontak
    function delete($id){
        if(empty($id)){
            redirect('kontak');
        }else{
            $delete =  $this->curl->simple_delete($this->API.'/kontak', array('id'=>$id), array(CURLOPT_BUFFERSIZE => 10)); 
            if($delete)
            {
                $this->session->set_flashdata('hasil','Delete Data Berhasil');
            }else
            {
               $this->session->set_flashdata('hasil','Delete Data Gagal');
            }
            redirect('kontak');
        }
    }
}

Pada controller tersebut terdapat fungsi-fungsi dari library curl untuk komunikasi data dengan REST API Server, tampilan antarmuka yang akan ditampilkan ke pengguna pada masing-masing fungsi, dan data apa saja yang diperlukan untuk kominikasi data dengan server REST API server.

Views

Views diperlukan untuk memberikan antarmuka kepada pengguna, views yang diperlukan disini adalah list untuk menampilkan semua data, create yang berupa form tambah data, dan edit yang berupa form untuk mengubah data yang sudah ada.

Buat folder baru pada direktori rest_ci_client/application/views dangan nama kontak

Baca & Hapus Data

Buat file php baru dengan nama list.php pada direktori rest_ci_client/application/views/kontak

<font color="orange">
<?php echo $this->session->flashdata('hasil'); ?>
</font>
<table border="1">
    <tr><th>ID</th><th>NAMA</th><th>NOMOR</th><th></th></tr>
    <?php
    foreach ($datakontak as $kontak){
        echo "<tr>
              <td>$kontak->id</td>
              <td>$kontak->nama</td>
              <td>$kontak->nomor</td>
              <td>".anchor('kontak/edit/'.$kontak->id,'Edit')."
                  ".anchor('kontak/delete/'.$kontak->id,'Delete')."</td>
              </tr>";
    }
    ?>
</table>
<a href="http://localhost/rest_ci_client/index.php/kontak/create">+ Tambah data<a>
Image

Tambah Data

Buat file php baru dengan nama create.php pada direktori rest_ci_client/application/views/kontak

<?php echo form_open_multipart('kontak/create');?>
<table>
    <tr><td>NAMA</td><td><?php echo form_input('nama');?></td></tr>
    <tr><td>NOMOR</td><td><?php echo form_input('nomor');?></td></tr>        
    <tr><td colspan="2">
        <?php echo form_submit('submit','Simpan');?>
        <?php echo anchor('kontak','Kembali');?></td></tr>
</table>
<?php
echo form_close();
?>
Image

Edit Data

Buat file php baru dengan nama edit.php pada direktori rest_ci_client/application/views/kontak

<?php echo form_open('kontak/edit');?>
<?php echo form_hidden('id',$datakontak[0]->id);?>

<table>
    <tr><td>ID</td><td><?php echo form_input('',$datakontak[0]->id,"disabled");?></td></tr>
    <tr><td>NAMA</td><td><?php echo form_input('nama',$datakontak[0]->nama);?></td></tr>
    <tr><td>NOMOR</td><td><?php echo form_input('nomor',$datakontak[0]->nomor);?></td></tr>
    <tr><td colspan="2">
        <?php echo form_submit('submit','Simpan');?>
        <?php echo anchor('kontak','Kembali');?></td></tr>
</table>
<?php
echo form_close();
?>
Image