Cara Mudah Membuat Rest API Server Dengan Codeigniter
Representational State Transfer atau REST merupakan suatu gaya arsitektur perangkat lunak untuk untuk pendistribusian sistem hipermedia seperti www.Istilah REST 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 berupa framework PHP dengan model MVC (Model,View,Controller) untuk membangun website dinamis dengan menggunakan PHP.Pada penerapan REST pada Codeigniter diperlukan beberapa library tambahan yang tidak disediakan secara default pada Codeigniter,salah satu library yang bisa digunakan yakni library dari Chris Kacerguis.
Berikut ini penjelasan langkah-langkah membuat REST API server yang sederhana tentang CRUD kontak nomor telepon.REST API server,,selanjutnya diuji menggunakan Postman yang merupakan aplikasi ekstensi atau tambahan dari Google Chrome.
Langkah Awal Persiapan
Pembuatan Rest API server memerlukan :
- Webserver : Xampp,Wampp atau lainnya.
- Codeigniter dan library REST server yang diperlukan dapat diunduh di https://github.com/chriskacerguis/codeigniter-restserver untuk versi terbaru,versi yang digunakan adalah https://github.com/ardisaurus/ci-restserver.
Setelah semua yang diperlukan siap,lakukan extract Codeigniter dan library REST server yang didownload dan pindah ke htdocs pada direktori xampp lalu rename folder Codeigniter dan library REST server menjadi rest_ci.
Masukan http://127.0.0.1/rest_ci/index.php/rest_server pada address bar browser kalian,jika muncul gambar dibawah ini maka instalasi berhasil.
Konfigurasi database
Buat database baru nama “kontak” :
CREATE DATABASE kontak;
Buat tabel baru dengan nama “telpon” dengan field id (int 11 AUTO_INCREMENT),nama (varchar 30),nomor (varchar 11):
USE kontak; CREATE TABLE IF NOT EXISTS `telpon` ( `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 ;
Masukan beberapa data contoh :
USE kontak; INSERT INTO `telpon` (`id`, `nama`, `nomor`) VALUES (1, 'Gema', '08576666772'), (2, 'Mars', '08576666773'), (7, 'Pegasus', '08576666774'); Buka database.php pada rest_ci/application/config dirubah menjadi :
<?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 memberikan akses baca pada sumber daya yang disediakan oleh REST API,Contoh : untuk membaca data dari tabel telpon pada database kontak.Untuk membaca data dari database dapat dilakukan dengan active record yang sudah 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.
Buat file php baru di di rest_ci/application/controller dengan nama kontak.php.
<?php defined('BASEPATH') OR exit('No direct script access allowed'); require APPPATH . '/libraries/REST_Controller.php'; use Restserver\Libraries\REST_Controller; class Kontak extends REST_Controller { function __construct($config = 'rest') { parent::__construct($config); $this->load->database(); } //Menampilkan data kontak function index_get() { $id = $this->get('id'); if ($id == '') { $kontak = $this->db->get('telpon')->result(); } else { $this->db->where('id', $id); $kontak = $this->db->get('telpon')->result(); } $this->response($kontak, 200); } //Masukan function selanjutnya } ?>
Guna menguji kode yang sudah dibuat,buka Postman>pilih metode GET>masukan http://127.0.0.1/rest_ci/index.php/kontak pada address bar lalu klik “Send”.
Ubah address pada address bar menjadi http://127.0.0.1/rest_ci/index.php/kontak?id=7 lalu klik “Send”.
POST
POST digunakan untuk mengirimkan data baru dari client ke server REST API.Contohnya digunakan untuk menambahkan kontak baru yang terdiri dari id,nama dan nomor.
//Mengirim atau menambah data kontak baru 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)); } } //Masukan function selanjutnya
Guna mengujinya buka Postman,lalu pilih metode POST,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-urlencodedmasukan key dan value yang diperlukan (id, nama, nomor), lalu klik “Send”.
Lakukan metode GET untuk melihat data terbaru.
PUT
Metode PUT digunakan untuk memperbarui data yang telah ada di server REST API.Contohnya digunakan untuk memperbarui data dengan id 88 pada tabel telpon database kontak.
//Memperbaharui data kontak yang sudah ada 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('telpon', $data); if ($update) { $this->response($data, 200); } else { $this->response(array('status' => 'fail', 502)); } } //Masukan function selanjutnya
Guna mengujinya buka Postman,pilih metode PUT,masukan http://127.0.0.1/rest_ci/index.php/kontak pada address bar,lalu klik “Body” pada menu dibawah address bar,pilih x-www-form-urlencoded,lalu masukan key id dan value id yang akan diubah (88) diikuti key dan value selanjutnya,klik “Send”.
Lakukan metode GET untuk melihat data terbaru.
DELETE
DELETE digunakan untuk menghapus data yang sudah ada di server REST API.Contohnya digunakan menghapus data dengan id 88 pada tabel telpon database kontak.
//Menghapus salah satu data kontak function index_delete() { $id = $this->delete('id'); $this->db->where('id', $id); $delete = $this->db->delete('telpon'); if ($delete) { $this->response(array('status' => 'success'), 201); } else { $this->response(array('status' => 'fail', 502)); } }
Untuk mengujinya buka Postman,pilih metode DELETE,masukan http://127.0.0.1/rest_ci/index.php/kontak pada address bar,lalu klik “Body” pada menu dibawah address bar,pilih x-www-form-urlencoded,masukan key id dan value id yang akan dihapus (88),klik “Send”.
Lakukan metode GET untuk melihat data terbaru.
Keseluruhan isi dari kontak.php pada rest_ci pada rest_ci/application/controller seperti dibawah ini.
<?php defined('BASEPATH') OR exit('No direct script access allowed'); require APPPATH . '/libraries/REST_Controller.php'; use Restserver\Libraries\REST_Controller; class Kontak extends REST_Controller { function __construct($config = 'rest') { parent::__construct($config); $this->load->database(); } function index_get() { $id = $this->get('id'); if ($id == '') { $kontak = $this->db->get('telpon')->result(); } else { $this->db->where('id', $id); $kontak = $this->db->get('telpon')->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('telpon', $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('telpon', $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('telpon'); if ($delete) { $this->response(array('status' => 'success'), 201); } else { $this->response(array('status' => 'fail', 502)); } } } ?>
Sumber daya dari REST API tersebut dapat dimanfaatkan dengan aplikasi web,desktop atau mobile yang menjadi client dari REST API tersebut.