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 :- Webserver seperti Xampp, Wampp, atau lainnya.
- REST API Server yang sebelumnya dibuat pada Tutorial REST API Server Sederhana dengan Codeigniter 3.
- Codeigniter 3.1.3 atau versi terbaru yang dapat didownload di https://www.codeigniter.com/download.
- 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.
Masukan http://127.0.0.1/rest_ci_client/ pada address bar browser anda jika muncul gambar seperti dibawah maka instalasi telah berhasil.
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>
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();
?>
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();
?>
SUMBER
No comments:
Post a Comment