Membangun Rest API Server Dengan Codeigniter 3


# Persiapan File 

Download CodeIgniter 3 : https://codeigniter.com/download
Libraries Restserver : Download https://github.com/agamyusliman/ci-restserver

Buat folder baru di htdocs dengan nama rest-server, kemudian extract file CI kedalam folder rest-server, selanjutnya extract file ci-restserver kedalam folder rest-server/application dan replace all file.

pastikan Codeigniter 3 sudah bisa berjalan di komputer anda seperti berikut :

# Konfigurasi CI Dasar 

Buka file application/config/config.php kemudian edit base_url dengan alamat url http://localhost/rest-server/  dan hapus index.php pada index_page.

$config['base_url'] = 'http://localhost/rest-server'; //baris 26
$config['index_page'] = ''; //baris 38

Buka file application/config/autoload.php kemudian edit bagian libraries dan helper menjadi seperti berikut:

$autoload['libraries'] = array('database'); //baris 61
$autoload['helper'] = array('url'); //baris 92

# Konfigurasi Database

Buka file application/config/database.php kemudian edit sesuai dengan database yang sudah dibuat sebelumnya, yaitu nama database : dbrest, userrname : root dan password : kosong atau menjadi seperti berikut :

$db['default'] = array(
 'dsn' => '',
 'hostname' => 'localhost',
 'username' => 'root',
 'password' => '',
 'database' => 'dbrest',
 '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
);

Jika anda belum memiliki database silahkan eksekusi perintah SQL berikut :
CREATE DATABASE `dbrest`;
USE `dbrest`;
DROP TABLE IF EXISTS `produk`;
CREATE TABLE `produk` (
  `id` INT(6) UNSIGNED NOT NULL AUTO_INCREMENT,
  `nama_produk` VARCHAR(30) DEFAULT NULL,
  `tipe_produk` VARCHAR(30) DEFAULT NULL,
  `harga` INT(50) DEFAULT NULL,
  `stok` INT(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=23 DEFAULT CHARSET=latin1;

Buka kembali url project pada link berikut : http://localhost/rest-server/index.php/example anda untuk memastikan project yang kita buat sudah terintergrasi dengan library Rest Server. sehingga tampilan nya menjadi seperti berikut :

# Coding

saat nya kita akan membuat coding untuk membuat web service api, adapun api yang akan kita buat diantaranya adalah sebagai berikut :
  1. Menampilkan data produk
  2. Penyimpanan data produk
  3. Ubah data produk
  4. Hapus data produk
untuk membuat perintah diatas kita akan menambahkan sebuah file baru dengan nama Produk_model.php di application/model/Produk_model.php dan sebuah Controller dengan nama Produk.php di application/controller/Produk.php

1. Menampilkan data produk


Tambahkan coding pada Controller Produk.php seperti berikut :

<?php
use Restserver\Libraries\REST_Controller;

defined('BASEPATH') or exit('No direct script access allowed');
require APPPATH . '/libraries/REST_Controller.php';
class Produk extends REST_Controller
{
    public function __construct()
    {
        parent::__construct();
        //inisialisasi model Produk_model.php dengan nama produk
        $this->load->model('Produk_model', 'produk');
    }
    public function index_get()
    {
       $id = $this->get('id');
        if ($id == '') {
            $produk = $this->db->get('produk')->result();
        } else {
            $this->db->where('id', $id);
            $produk = $this->db->get('produk')->result();
        }
        $this->response($produk, REST_Controller::HTTP_OK);
    }
}

Untuk melihat hasil silahkan buka browser anda dengan url yang mengarah ke Controller produk.php dengan url http://localhost/rest-server/index.php/produk maka akan muncul hasil seperti pada gambar berikut :

Jika anda menggunakan postman hasilnya akan seperti berikut :


2. Penyimpanan data Produk

Tambahkan pada Controller coding dibawah fungsi index_get seperti berikut :

 function index_post()
    {
        $data = array(
            'nama_produk'        => $this->post('nama_produk'),
            'tipe_produk'        => $this->post('tipe_produk'),
            'stok'               => $this->post('stok'),
            'harga'              => $this->post('harga'),
        );
        $insert = $this->db->insert('produk', $data);
        if ($insert) {
            $this->response($data, REST_Controller::HTTP_OK);
        } else {
            $this->response(array('status' => 'fail', 502));
        }
    }
Untuk mengujinya coding penyimpanan diatas kita dapat menggunakan Postman, pilih metode POST, masukan http://localhost/rest-server/index.php/produk pada address bar, klik "Body" pada menu dibawah address bar, pilih x-www-form-urlencoded, masukan key dan value yang diperlukan lalu klik "Send" (lihat gambar).


2. Ubah data Produk


function index_put() {
        $id = $this->put('id');
        $data = array(
            'nama_produk'        => $this->put('nama_produk'),
            'tipe_produk'        => $this->put('tipe_produk'),
            'stok'               => $this->put('stok'),
            'harga'              => $this->put('harga'),
        );
        $this->db->where('id', $id);
        $update = $this->db->update('produk', $data);
        if ($update) {
            $this->response($data, 200);
        } else {
            $this->response(array('status' => 'fail', 502));
        }
    }
Untuk mengujinya coding pengubahan data diatas kita dapat menggunakan Postman, pilih metode PUT, masukan http://localhost/rest-server/index.php/produk pada address bar, klik "Body" pada menu dibawah address bar, pilih x-www-form-urlencoded, masukan key dan value yang diperlukan lalu klik "Send" (lihat gambar).


3. Hapus data Produk


function index_delete()
    {
        $id = $this->delete('id');
        $this->db->where('id', $id);
        $delete = $this->db->delete('produk');
        if ($delete) {
            $this->response(array('status' => 'success'), 201);
        } else {
            $this->response(array('status' => 'failed'), 502);
        }
    }

Untuk mengujinya coding hapus data diatas kita dapat menggunakan Postman, pilih metode DELETE, masukan http://localhost/rest-server/index.php/produk pada address bar, klik "Body" pada menu dibawah address bar, pilih x-www-form-urlencoded, masukan key dan value yang diperlukan lalu klik "Send" (lihat gambar).


Sekian, JIka ada pertanyaan silahkan isi komentar dibawah.

5 komentar untuk "Membangun Rest API Server Dengan Codeigniter 3"

Comment Author Avatar
Error Produk_model.php nya kosong??
Comment Author Avatar
di uncomment aja baris :
$this->load->model('Produk_model', 'produk');
jadi

//$this->load->model('Produk_model', 'produk');

kalo diliat dari codingan ga ada method/fungsi yng dipakai dri model tsb
Comment Author Avatar
Tolong kalau memang niat berbagi ilmu jangan nanggu-nanggu ya kak. Produk_model.php tidak ada. Semoga kita yang sering berbagi ilmu dengan baik, bisa membuat Indonesia Jaya dan Maju. Jangan kwatir Anda akan menjadi kecil dengan berbagi ilmu, tapi sebaliknya akan semakin Besar dengan banyak ilmu yang Anda dapatkan lagi. Yakinlah... Mari semangat untuk selalu berbagi ilmu