REST API Server Dan Client Sederhana Dengan Codeigniter 3
REST API Server Dan Client Sederhana Dengan Codeigniter 3
Ditulis oleh Nugroho Ardi Sutrisno, dipublikasi pada 28 Feb 2019 dalam kategori Tutorial
REST, singkatan bahasa Inggris dari Representational State Transfer, adalah suatu gaya arsitektur perangkat lunak untuk untuk pendistibusian sistem hipermedia seperti www.
Istilah ini diperkenalkan pertama kali pada tahun 2000 pada disertasi doktoral Roy Fielding. Pada arsitektur REST, REST server menyediakan resources (sumber daya/data)
dan REST client mengakses dan menampilkan resource tersebut untuk penggunaan selanjutnya.
CodeIgniter merupakan aplikasi sumber terbuka yang berupa framework PHP dengan model MVC (Model, View, Controller) untuk membangun website dinamis dengan
menggunakan PHP. Dalam penerapan REST pada Codeigniter diperlukan beberapa library tambahan yang tidak disediakan secara default pada Codeigniter, salah satu library
Sebagai contoh penerapan REST pada Codeigniter di bawah ini akan dijelaskan langkah-langkah pembuatan REST API server sederhana tentang CRUD kontak nomor
telepon. REST API server tersebut selanjutnya akan diuji menggunakan Postman yang merupakan aplikasi ekstensi/tambahan dari Google Chrome.
Persiapan
2. Codeigniter dan library REST server yang diperlukan dapat diunduh di https://github.com/chriskacerguis/codeigniter-restserver untuk versi terbaru, versi yang digunakan disini adalah https://github.com/ardisaurus/ci-restserver.
Setelah semua yang diperlukan telah siap, extract Codeigniter dan library REST server yang telah didownload dan pindah ke htdocs pada direktori xampp lalu rename folder
Konfigurasi database
Buat tabel baru dengan nama "telepon" dengan field id (int 11 AUTO_INCREMENT), nama (varchar 30), nomor (varchar 11):
USE kontak;
CREATE TABLE IF NOT EXISTS `telepon` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nama` varchar(50) NOT NULL,
`nomor` varchar(13) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
USE kontak;
INSERT INTO `telepon` (`id`, `nama`, `nomor`) VALUES
(1, 'Orion', '08576666762'),
(2, 'Mars', '08576666770'),
(7, 'Alpha', '08576666765');
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'kontak',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
GET
Metode GET menyediakan akses baca pada sumber daya yang disediakan oleh REST API. Sebagai contohnya digunakan untuk membaca data dari tabel telepon pada
database kontak. Untuk membaca data dari database dapat dilakukan dengan active record yang telah disediakan Codeigniter. Sebelum membaca data dari database, fungsi
GET yang akan dibuat terlebih dahulu memeriksa apakah terdapat property id pada address bar sehingga data yang ditampilkan dapat di seleksi berdasarkan id atau
ditampilkan semua.
<?php
Untuk menguji kode yang telah dibuat buka Postman, Pilih metode GET, masukan http://127.0.0.1/rest_ci/index.php/kontak pada address bar lalu klik "Send".
POST
Metode POST digunakan untuk mengirimkan data baru dari client ke server REST API. Sebagai contohnya digunakan untuk menambahkan kontak baru yang terdiri dari id,
x-www-form-urlencoded, masukan key dan value yang diperlukan (id, nama, nomor), lalu klik "Send".
PUT
Metode PUT digunakan untuk memperbarui data yang telah ada di server REST API. Sebagai contohnya digunakan untuk memperbarui data dengan id 88 pada tabel telepon
database kontak.
Untuk mengujinya buka Postman, pilih metode PUT, masukan http://127.0.0.1/rest_ci/index.php/kontak pada address bar, klik "Body" pada menu dibawah address bar, pilih
x-www-form-urlencoded, masukan key id dan value id yang akan diubah (88) diikuti key dan value selanjutnya, lalu klik "Send".
Lakukan metode GET untuk melihat data terbaru.
DELETE
Metode DELETE digunakan untuk menghapus data yang telah ada di server REST API. Sebagai contohnya digunakan untuk menghapus data dengan id 88 pada tabel telepon
database kontak.
pilih x-www-form-urlencoded, masukan key id dan value id yang akan dihapus (88), lalu klik "Send".
Keseluruhan isi dari kontak.php pada rest_ci pada rest_ci/application/controller akan tampak seperti dibawah ini.
<?php
function index_get() {
$id = $this->get('id');
if ($id == '') {
$kontak = $this->db->get('telepon')->result();
} else {
$this->db->where('id', $id);
$kontak = $this->db->get('telepon')->result();
}
$this->response($kontak, 200);
}
function index_post() {
$data = array(
'id' => $this->post('id'),
'nama' => $this->post('nama'),
'nomor' => $this->post('nomor'));
$insert = $this->db->insert('telepon', $data);
if ($insert) {
$this->response($data, 200);
} else {
$this->response(array('status' => 'fail', 502));
}
}
function index_put() {
$id = $this->put('id');
$data = array(
'id' => $this->put('id'),
'nama' => $this->put('nama'),
'nomor' => $this->put('nomor'));
$this->db->where('id', $id);
$update = $this->db->update('telepon', $data);
if ($update) {
$this->response($data, 200);
} else {
$this->response(array('status' => 'fail', 502));
}
}
function index_delete() {
$id = $this->delete('id');
$this->db->where('id', $id);
$delete = $this->db->delete('telepon');
if ($delete) {
$this->response(array('status' => 'success'), 201);
} else {
$this->response(array('status' => 'fail', 502));
}
}
}
?>
Selanjutnya sumber daya dari REST API tersebut dapat dimanfaatkan dengan aplikasi web, desktop, atau mobile yang menjadi client dari REST API tersebut.
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
2. REST API Server yang sebelumnya dibuat pada Tutorial REST API Server Sederhana dengan Codeigniter 3.
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
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{
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');
}
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 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
Buat file php baru dengan nama edit.php pada direktori rest_ci_client/application/views/kontak
<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();
?>