Membangun Rest API Server Dengan Codeigniter 3

Membangun Rest API Server Codeigniter 3, Web Service PHP

# 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.