0% menganggap dokumen ini bermanfaat (0 suara)
295 tayangan14 halaman

REST API Sederhana Dengan Codeigniter 3

Dokumen tersebut membahas cara membuat REST API server sederhana menggunakan framework Codeigniter 3 untuk melakukan operasi CRUD (create, read, update, delete) pada data kontak menggunakan method GET, POST, PUT, dan DELETE. Langkah-langkahnya meliputi instalasi library REST server, konfigurasi database, dan pendefinisian method di controller.

Diunggah oleh

masirul2009
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
295 tayangan14 halaman

REST API Sederhana Dengan Codeigniter 3

Dokumen tersebut membahas cara membuat REST API server sederhana menggunakan framework Codeigniter 3 untuk melakukan operasi CRUD (create, read, update, delete) pada data kontak menggunakan method GET, POST, PUT, dan DELETE. Langkah-langkahnya meliputi instalasi library REST server, konfigurasi database, dan pendefinisian method di controller.

Diunggah oleh

masirul2009
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 14

REST API Server Sederhana dengan

Codeigniter 3

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 yang dapat digunakan adalah library dari Chris
Kacerguis.
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
Dalam pembuatan Rest API server ini diperlukan :
1. Webserver seperti Xampp, Wampp, atau lainnya.
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 Codeigniter dan library REST server menjadi rest_ci.
Masukan http://127.0.0.1/rest_ci/index.php/rest_server pada address bar
browser anda jika muncul gambar seperti dibawah maka instalasi telah berhasil.
Konfigurasi database
Buat database baru dengan nama "kontak" :
CREATE DATABASE kontak;
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 ;
Masukan beberapa data contoh :
USE kontak;
INSERT INTO `telepon` (`id`, `nama`, `nomor`) VALUES
(1, 'Orion', '08576666762'),
(2, 'Mars', '08576666770'),
(7, 'Alpha', '08576666765');
Buka database.php pada rest_ci/application/config ubah 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 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.
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('telepon')->result();
} else {
$this->db->where('id', $id);
$kontak = $this->db->get('telepon')->result();
}
$this->response($kontak, 200);
}

//Masukan function selanjutnya disini


}
?>
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".
Hasil GET semua data
:

Ubah address pada address bar


menjadi http://127.0.0.1/rest_ci/index.php/kontak?id=7 lalu klik "Send". Hasil
GET data dengan id
:

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, 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 disini


Untuk mengujinya buka Postman, 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-urlencoded,
masukan 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. Sebagai contohnya digunakan untuk memperbarui data dengan id 88 pada
tabel telepon database kontak.
//Memperbarui data kontak yang telah 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('telepon', $data);
if ($update) {
$this->response($data, 200);
} else {
$this->response(array('status' => 'fail', 502));
}
}

//Masukan function selanjutnya disini


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.
//Menghapus salah satu data kontak
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));
}
}
Untuk mengujinya buka Postman, pilih metode DELETE,
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 dihapus (88), lalu klik
"Send".

Lakukan metode GET untuk melihat data


terbaru.

Keseluruhan isi dari kontak.php pada rest_ci pada rest_ci/application/controller


akan tampak 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('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.
Aplikasi web REST API Client
Sederhana dengan Codeigniter 3

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
Dalam pembuatan Rest api client ini diperlukan :
1. Webserver seperti Xampp, Wampp, atau lainnya.
2. REST API Server yang sebelumnya dibuat pada Tutorial REST API Server
Sederhana dengan Codeigniter 3.
3. Codeigniter 3.1.3 atau versi terbaru yang dapat didownload
di https://www.codeigniter.com/download.
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 direktori xampp lalu
rename folder menjadi rest_ci_client.
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{

var $API ="";

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');
}

// menampilkan data kontak


function index(){
$data['datakontak'] = json_decode($this->curl->simple_get($this-
>API.'/kontak'));
$this->load->view('kontak/list',$data);
}

// insert data kontak


function create(){
if(isset($_POST['submit'])){
$data = array(
'id' => $this->input->post('id'),
'nama' => $this->input->post('nama'),
'nomor'=> $this->input->post('nomor'));
$insert = $this->curl->simple_post($this->API.'/kontak', $data,
array(CURLOPT_BUFFERSIZE => 10));
if($insert)
{
$this->session->set_flashdata('hasil','Insert Data Berhasil');
}else
{
$this->session->set_flashdata('hasil','Insert Data Gagal');
}
redirect('kontak');
}else{
$this->load->view('kontak/create');
}
}

// edit data kontak


function edit(){
if(isset($_POST['submit'])){
$data = array(
'id' => $this->input->post('id'),
'nama' => $this->input->post('nama'),
'nomor'=> $this->input->post('nomor'));
$update = $this->curl->simple_put($this->API.'/kontak', $data,
array(CURLOPT_BUFFERSIZE => 10));
if($update)
{
$this->session->set_flashdata('hasil','Update Data Berhasil');
}else
{
$this->session->set_flashdata('hasil','Update Data Gagal');
}
redirect('kontak');
}else{
$params = array('id'=> $this->uri->segment(3));
$data['datakontak'] = json_decode($this->curl->simple_get($this-
>API.'/kontak',$params));
$this->load->view('kontak/edit',$data);
}
}

// delete data kontak


function delete($id){
if(empty($id)){
redirect('kontak');
}else{
$delete = $this->curl->simple_delete($this->API.'/kontak',
array('id'=>$id), array(CURLOPT_BUFFERSIZE => 10));
if($delete)
{
$this->session->set_flashdata('hasil','Delete Data Berhasil');
}else
{
$this->session->set_flashdata('hasil','Delete Data Gagal');
}
redirect('kontak');
}
}
}
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 folder baru pada direktori rest_ci_client/application/views dangan nama
kontak
Baca & Hapus Data
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
<?php echo form_open_multipart('kontak/create');?>
<table>
<tr><td>NAMA</td><td><?php echo form_input('nama');?></td></tr>
<tr><td>NOMOR</td><td><?php echo form_input('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();
?>
Edit Data
Buat file php baru dengan nama edit.php pada direktori
rest_ci_client/application/views/kontak
<?php echo form_open('kontak/edit');?>
<?php echo form_hidden('id',$datakontak[0]->id);?>

<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();
?>

Anda mungkin juga menyukai