Untuk lebih menunjang pemahaman tentang implimentasi RestServer di Codeigniter, berikut adalah latihan nyata implementasinya.
1. Buat database baru dengan nama “karyawan_db”
CREATE DATABASE karyawan_db;
2. Buatlah tabel sebagai berikut
CREATE TABLE `karyawan` (
`id_karyawan` int(11) NOT NULL,
`username` varchar(100) NOT NULL,
`password` varchar(50) NOT NULL,
`namalengkap` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
`nohp` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `karyawan`
ADD PRIMARY KEY (`id_karyawan`);
ALTER TABLE `karyawan`
MODIFY `id_karyawan` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
3. Setup database di file application/config/database.php
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'karyawan_db',
'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
);
4. Setup application/autoload.php
Temukan baris berikut:
$autoload[‘libraries’] = array();
Ubah menjadi:
$autoload[‘libraries’] = array(‘database’);
5. Pemrograman Inti
Buat satu file application/controller/Api_karyawan.php, kemudian isi file tersebut dengan identifikasi nama kelas dan tambahkan satu buah function bernama tambah_post. Perlu diketahui bahwa untuk membuat sebuah API pada RestServer, suatu nama function harus ditambahkan identifikasi method requestnya, sebagai contoh:
REQUEST |
FUNCTION NAME
|
POST |
tambah_post() |
PUT |
update_put() |
GET |
seleksidata_get() |
DELETE |
hapus_delete() |
Lengkapi file Api_karyawan.php dengan script kode di bawah ini:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require APPPATH . 'libraries/RestController.php';
require APPPATH . 'libraries/Format.php';
use chriskacerguis\RestServer\RestController;
class Api_karyawan extends RestController{
function __construct(){
parent::__construct();
$this->load->model('karyawan_model');
}
function tambah_post(){
$username = $this->input->post('username');
$password = md5($this->input->post('password'));
$namalengkap = $this->input->post('namalengkap');
$email = $this->input->post('email');
$nohp = $this->input->post('nohp');
$data = ['username' => $username,
'password' => $password,
'namalengkap' => $namalengkap,
'email' => $email,
'nohp' => $nohp
];
$insertdata = $this->karyawan_model->insertData('karyawan', $data);
if ($insertdata == true){
$this->response(['status'=>true, 'message'=>'Data berhasil ditambahkan'], RestController::HTTP_OK);
}else{
$this->response(['status'=>false, 'message'=>'Data gagal ditambahkan'], RestController::HTTP_NOT_FOUND);
}
}
}
Kemudian buat satu file baru application/model/karyawan_model.php, lalu tambahkan baris kode seperti di bawah ini:
defined('BASEPATH') OR exit('No direct script access allowed');
class Karyawan_model extends CI_Model{
function __construct(){
parent::__construct();
}
function insertData($tabel, $data){
$this->db->trans_begin();
$result = $this->db->insert($tabel, $data);
if ($this->db->trans_status() == false){
$this->db->trans_rollback();
return false;
}else{
$this->db->trans_commit();
return $result;
}
}
}
Langkah selanjutnya adalah mencoba API yang baru saja dibuat dengan menggunakan Postman, dan ikuti caranya persis seperti terlihat pada gambar di bawah ini.

Langkah selanjutnya adalah lengkapi file application/controller/Api_karyawan.php dengan kode di bawah ini:
function lihatkaryawan_get(){
$dtkaryawan = $this->karyawan_model->getAllEmployee();
if ($dtkaryawan->num_rows() > 0){
$this->response(['status'=>true, 'data'=>$dtkaryawan->result()], RestController::HTTP_OK);
}else{
$this->response(['status'=>false, 'data'=>'Tidak ditemukan data karyawan'], RestController::HTTP_NOT_FOUND);
}
}
function lihatkaryawansatu_get(){
$idkaryawan = $this->input->get('id');
$dtkaryawan = $this->karyawan_model->getEmployee($idkaryawan);
if ($dtkaryawan->num_rows() > 0){
$this->response(['status'=>true, 'data'=>$dtkaryawan->row()], RestController::HTTP_OK);
}else{
$this->response(['status'=>false, 'data'=>'Tidak ditemukan data karyawan'], RestController::HTTP_NOT_FOUND);
}
}
function updatekaryawan_post(){
$id_karyawan = $this->input->post('id');
$username = $this->input->post('username');
$password = md5($this->input->post('password'));
$namalengkap = $this->input->post('namalengkap');
$email = $this->input->post('email');
$nohp = $this->input->post('nohp');
$data = ['username' => $username,
'password' => $password,
'namalengkap' => $namalengkap,
'email' => $email,
'nohp' => $nohp
];
$kondisi = ['id_karyawan' => $id_karyawan];
$updatedata = $this->karyawan_model->updateData('karyawan', $data, $kondisi);
if ($updatedata == true){
$this->response(['status'=>true, 'message'=>'Data berhasil diupdate'], RestController::HTTP_OK);
}else{
$this->response(['status'=>false, 'message'=>'Data gagal diupdate'], RestController::HTTP_NOT_FOUND);
}
}
function hapuskaryawan_delete(){
$id_karyawan = $this->input->get('id');
$cekdata = $dtkaryawan = $this->karyawan_model->getEmployee($id_karyawan);
if ($cekdata->num_rows() > 0){
$kondisi = ['id_karyawan' => $id_karyawan];
$deletedata = $this->karyawan_model->deleteData('karyawan', $kondisi);
$this->response(['status'=>true, 'message'=>'Data berhasil dihapus'], RestController::HTTP_OK);
}else{
$this->response(['status'=>false, 'message'=>'Data gagal dihapus'], RestController::HTTP_NOT_FOUND);
}
}
Dan lengkapi pula file application/model/karyawan_model.php dengan baris kode di bawah ini:
function getAllEmployee(){
$this->db->select('*');
$this->db->from('karyawan');
$this->db->order_by('username', 'ASC');
$query = $this->db->get();
return $query;
}
function getEmployee($id){
$this->db->select('*');
$this->db->from('karyawan');
$this->db->where('id_karyawan', $id);
$query = $this->db->get();
return $query;
}
function updateData($tabel, $data, $kondisi){
$this->db->trans_begin();
$this->db->where($kondisi);
$result = $this->db->update($tabel, $data);
if ($this->db->trans_status() == FALSE){
$this->db->trans_rollback();
return false;
}else{
$this->db->trans_commit();
return $result;
}
}
function deleteData($tabel, $kondisi){
$this->db->trans_begin();
$this->db->where($kondisi);
$result = $this->db->delete($tabel);
if ($this->db->trans_status() == FALSE){
$this->db->trans_rollback();
return false;
}else{
$this->db->trans_commit();
return $result;
}
}
Langkah yang terakhir adalah mencobanya dengan Postman.


