Langkah selanjutnya Aktifkan local web server yang sudah anda install dan setelah itu buka
web browser anda, coba akses http://localhost/webservice/ maka jika muncul welcome
codeigniter maka artinya anda sudah berhasil melakukan proses install codeigniter
Setelah proses instalasi berhasil maka kita akan melakukan beberapa konfigurasi seperti
konfigurasi web, database dan autoload . yang pertama adalah konfigurasi web ( config.php)
yang ada pada file application/config/config.php :
$config['base_url'] = 'http://localhost/webservice/';
$config['index_page'] = '';
langkah selanjutnya kita akan memperbaiki url system yang kita buat agar menjadi lebih SEO
friendly, secara default codeigniter akan menyertakan index.php sebelum nama controller
ketika di akses pada web browser, nah solusi dari hal ini adalah membuat file .htacces pada
root project anda dan tulislah script berikut ini :
<IfModule mod_rewrite.c>
Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/system.*
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?/$1 [L]
</IfModule>
MEMBANGUN WEB SERVICE MENGGUNAKAN 2015
CODEIGNITER DAN SQL SERVER
Atau anda bisa membuat tabel tersebut dengan memasukan query SQL berikut ini :
CREATE TABLE IF NOT EXISTS `customer` (
`customerID` int(11) NOT NULL,
`customerName` varchar(40) NOT NULL,
`customerCity` text NOT NULL,
`customerPhone` varchar(12) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
Setelah selesai membuat database maka kita akan mengatur configurasi database
menyesuaikan dengan settingan dari web server, silahkan buka file database.php yang ada
pada application/config/database.php dan sesuaikan dengan konfigurasi anda
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'webservice',
'dbdriver' => 'mysqli',
'save_queries' => TRUE
);
MEMBANGUN WEB SERVICE MENGGUNAKAN 2015
CODEIGNITER DAN SQL SERVER
Langkah selanjutnya adalah membuat controller, controller adalah salah satu bagian dari
konsep MVC yang bertugas menjadi perantara antara model dan view, juga sebagai tempat
untuk melakukan logika atau proses bisniss dari aplikasi yang kita buat, oke langsung saja
buat file baru dengan nama Customer.php didalam folder application/controller dan tulislah
script berikut :
<?php
class Customer extends CI_Controller{
function __construct() {
parent::__construct();
$this->load->model('model_customer');
}
function index(){
$data['customers'] = $this->model_customer->select_all();
$this->load->view('customer/list',$data);
}
function add(){
$this->load->view('customer/add');
}
function store(){
$this->model_customer->save();
redirect('customer');
}
function edit(){
$id = $this->uri->segment(3);
$data['customer'] = $this->model_customer->get_customer($id)
->row_array();
$this->load->view('customer/edit',$data);
}
function update(){
$this->model_customer->update();
redirect('customer');
}
function delete(){
$id = $this->uri->segment(3);
$this->model_customer->delete($id);
MEMBANGUN WEB SERVICE MENGGUNAKAN 2015
CODEIGNITER DAN SQL SERVER
redirect('customer');
}
}
Langkah selanjutnya membuat model, model adalah sebuah class yang bertugas untuk
berinteraksi dengan database seperti proses insert, update, delete dan select,oke buatlah
sebuah file baru dengan nama Model_customer.php dan tulislah script berikut :
<?php
class Model_customer extends CI_Model{
Sekarang kita akan membuat view yang merupakan bagian untuk menampilkan informasi
kepada client,lokasinya ada di application/views, oke supaya file file kita lebih terorganisir
maka buatlah sebuah folder dengan nama customer dan buatlah 3 file berikut :
MEMBANGUN WEB SERVICE MENGGUNAKAN 2015
CODEIGNITER DAN SQL SERVER
Lalu buatlah sebuah file baru dengan nama template_master.php pada folder
application/views, file template ini nantinya akan menjadi master template pada aplikasi
kita :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
<title>CRUD DATA CUSTOMER</title>
<link href="<?php echo base_url();?>bootstrap/css/bootstrap.min.css"
rel="stylesheet">
<link href="<?php echo base_url();?>bootstrap/css/sticky-footer-
navbar.css" rel="stylesheet">
</head>
<body>
Untuk management templating kita akan menggunakan library dari jeromejaglale.com dan
bisa anda download disini http://goo.gl/eLRspS , Kemudian anda harus mengestrack file
ci_template_library3.zip ke folder C:\xampp\htdocs\webservice\application\libraries
MEMBANGUN WEB SERVICE MENGGUNAKAN 2015
CODEIGNITER DAN SQL SERVER
Library ini akan sering kita gunakan nantinya jadi oleh karena itu lebih baik kita lakukan
sedikit konfigurasi agar library ini selalu diload oleh system kita dengan menambahkan
template pada list library yang selalu diload, silahkan buka application/config/autoload.php
$autoload['libraries'] = array('database','session','template');
Masih ingat tampilan list customer yang kita buat tadi ? nah sekarang kita akan melakukan
sedikit manipulasi agar tampilan nya menjadi lebih menarik, caranya adalah dengan
menggunakan perintah dari library template agar meload template master yang kita buat,
buka controller customer :
Lalu kita akan ubah juga view untuk list customernya menggunakan style dari boostrap,
buka file views/customer/list.php dan ubahlah sehingga menjadi seperti ini:
<h3>DATA CUSTOMER</h3>
<?php echo anchor('customer/add','ENTRY',array('class'=>'btn btn-danger
btn-sm')); ?>
<table class="table table-bordered">
<tr><td>NO</td><td>NAMA LENGKAP</td><td>ALAMAT</td><td>NO HP</td><td
colspan="2">ACTION</td></tr>
<?php
$no=1;
MEMBANGUN WEB SERVICE MENGGUNAKAN 2015
CODEIGNITER DAN SQL SERVER
foreach ($customers->result() as $customer){
echo "<tr>
<td width='10'>$no</td>
<td>$customer->customerName</td>
<td>$customer->customerCity</td>
<td>$customer->customerPhone</td>
<td width='20'>".anchor('customer/edit/'.$customer-
>customerID,'Edit',array('class'=>'btn btn-danger btn-sm'))."</td>
<td width='20'>".anchor('customer/delete/'.$customer-
>customerID,'Delete',array('class'=>'btn btn-danger btn-sm'))."</td>
</tr>";
$no++;
}
?>
</table>
Maka silahkan akses program anda melalui browser dan akan menjadi seperti ini :
Berikut ini adalah script full untuk controller yang sudah di modifikasi, dan script untuk
pemanggilan viewnya tidak saya hilangkan melainkan hanya diberikan tanda komentar saja :
MEMBANGUN WEB SERVICE MENGGUNAKAN 2015
CODEIGNITER DAN SQL SERVER
<?php
class Customer extends CI_Controller{
function __construct() {
parent::__construct();
$this->load->model('model_customer');
}
function edit(){
$id = $this->uri->segment(3);
$data['customer'] = $this->model_customer->get_customer($id)-
>row_array();
//$this->load->view('customer/edit',$data);
$this->template->load('template_master','customer/edit',$data);
}
function update(){
$this->model_customer->update();
redirect('customer');
}
function delete(){
$id = $this->uri->segment(3);
$this->model_customer->delete($id);
redirect('customer');
}
}
MEMBANGUN WEB SERVICE MENGGUNAKAN 2015
CODEIGNITER DAN SQL SERVER
Customer/add.php
<?php echo form_open('customer/store'); ?>
<table class="table table-bordered">
<tr><td>Nama</td><td><?php echo form_input('name', '',
"placeholder='Nama Lengkap' class='form-control'"); ?></td></tr>
<tr><td>Kota</td><td><?php echo form_input('city', '',
"placeholder='Kota' class='form-control'"); ?></td></tr>
<tr><td>No HP</td><td><?php echo form_input('phone', '',
"placeholder='No HP' class='form-control'"); ?></td></tr>
<tr><td colspan="2"><?php echo form_submit('submit',
'simpan',"class='btn btn-danger btn-sm'") ?></td></tr>
</table>
</form>
Hasil dari script berikut akan menghasilkan tampilan seperti ini, lebih rapi dan bagus kan ?
MEMBANGUN WEB SERVICE MENGGUNAKAN 2015
CODEIGNITER DAN SQL SERVER
Application/edit.php
<?php echo form_open('customer/update'); ?>
<?php echo form_hidden('id', $customer['customerID']);?>
<table class="table table-bordered">
<tr><td>Nama</td><td><?php echo form_input('name',
$customer['customerName'], "placeholder='Nama Lengkap' class='form-
control'"); ?></td></tr>
<tr><td>Kota</td><td><?php echo form_input('city',
$customer['customerCity'], "placeholder='Kota' class='form-control'");
?></td></tr>
<tr><td>No HP</td><td><?php echo form_input('phone',
$customer['customerPhone'], "placeholder='No HP' class='form-control'");
?></td></tr>
<tr><td colspan="2">
<?php echo form_submit('submit', 'simpan',"class='btn btn-danger
btn-sm'") ?>
<?php echo anchor('customer','Kembali',array('class'=>'btn btn-
danger btn-sm'));?>
</td></tr>
</table>
</form>
MEMBANGUN WEBSERVICE
Pada bab ini kita akan mencoba membuat webservice untuk layanan data customer, dimana
akan ada 2 resource yang akan bertindak sebagai client dan server. Server adalah source
web service yang menyediakan layanan data yang bersumber dari database sedangkan
client adalah source yang akan mengakses data yang diberikan oleh webservice.
Untuk membuat web service kita akan menggunakan library rest server untuk codeigniter 3
yang dibuat oleh chris kacerguis dari Austin, sourcenya bisa di download disini
https://github.com/chriskacerguis/codeigniter-restserver
MEMBANGUN WEB SERVICE MENGGUNAKAN 2015
CODEIGNITER DAN SQL SERVER
Oke sebagai langkah pertama kita akan membangun web service nya terlebih dahulu,
silahkan extrack library codeigniter rest-server tadi kedalam project kita dan nanti anda
akan menemukan file rest.php yang ada difolder config dan REST_controller.php yang ada di
folder libraries.
Sekarang kita akan membuat controllernya dulu, buatlah sebuah file dengan nama Api.php
dan tulis scriptnya :
<?php
/**
* Webservice untuk data customer
* web service untuk melayani transaksi data customer.
*
* @package CodeIgniter
* @author Nuris Akbar,SST
* @license MIT
* @version 1.0.0
*/
function customers_get() {
$id = $this->get('id');
if ($id) {
$customer = $this->db->get_where('customer',
array('customerID' => $id))->result();
} else {
$customer = $this->db->get('customer')->result();
}
// generate response
if($customer){
$this->response($customer,200);
}else{
$this->response(array('status'=>'not found'),404);
}
}
function customers_post() {
$params = array(
'customerName' => $this->post('name'),
'customerPhone' => $this->post('phone'),
'customerCity' => $this->post('city'));
$process = $this->db->insert('customer', $params);
if($process){
// 201 artinya Successful creation of a resource.
$this->response(array('status'=>'succes'),201);
}else{
// 502 artinya Backend service failure (data store failure).
return $this->response(array('status'=>'fail'), 502);
}
MEMBANGUN WEB SERVICE MENGGUNAKAN 2015
CODEIGNITER DAN SQL SERVER
function customers_put() {
$params = array(
'customerName' => $this->put('name'),
'customerPhone' => $this->put('phone'),
'customerCity' => $this->put('city'));
$this->db->where('customerID', $this->put('id'));
$execute = $this->db->update('customer', $params);
if($execute){
$this->response(array('status'=>'succes'),201);
}else{
return $this->response(array('status'=>'fail'), 502);
}
}
function customers_delete($id) {
$this->db->where('customerID', $this->delete('id'));
$execute = $this->db->delete('customer');
if($execute){
$this->response(array('status'=>'succes'),201);
}else{
return $this->response(array('status'=>'fail'), 502);
}
}
Penjelasan:
Tidak jauh berbeda dengan script CRUD yang sudah kita bahas sebelumnya cuman ada
beberapa hal yang perlu diperhatikan yaitu terkait untuk mendapatkan inputan, library rest-
server ini mendapatkan inputan sesuai dengan method yang disetting, agar lebih jelas
silahkan lihat tabel dibawah ini :
Selanjutnya kita bisa mengirimkan response kepada client terhadap status request yang
dilakukan oleh clietn dengan cara $this->response();
Setelah webservicenya sudah beres maka kita akan membuat controller untuk client nya,
caranya buatlah sebuah controller dengan nama Customer.php dan tulislah script berikut ini
MEMBANGUN WEB SERVICE MENGGUNAKAN 2015
CODEIGNITER DAN SQL SERVER
<?php
/**
* Controller untuk akses data webservice customer
* web service untuk melayani transaksi data customer.
*
* @package CodeIgniter
* @author Nuris Akbar,SST
* @license MIT
* @version 1.0.0
*/
function __construct() {
parent::__construct();
$this->API="http://localhost/webservice/customer/customers/";
}
function index() {
$data['customers'] = $this->__execute($this->API,'get', '');
$this->template->load('template_master', 'customer/list', $data);
}
function add() {
if (isset($_POST['submit'])) {
$params = array(
'name' => $this->input->post('name'),
'phone' => $this->input->post('phone'),
'city' => $this->input->post('city'));
$this->__execute($this->API,'post', $params);
redirect('customer');
} else {
$this->template->load('template_master', 'customer/add');
}
}
function edit() {
if (isset($_POST['submit'])) {
$params = array(
'name' => $this->input->post('name'),
'id' => $this->input->post('id'),
'phone' => $this->input->post('phone'),
'city' => $this->input->post('city'));
$result = $this->__execute($this->API.'format/json/','put',
$params);
redirect('customer');
} else {
$id = $this->uri->segment(3);
$data['customer'] = $this->__execute(
$this->API.'id/'.$id,'get', array('id' => $id));
$this->template->load('template_master',
'customer/edit', $data);
MEMBANGUN WEB SERVICE MENGGUNAKAN 2015
CODEIGNITER DAN SQL SERVER
}
}
function delete($id) {
$this->__execute($this->API,'delete', array('id' => $id));
redirect('customer');
}
function __execute($url,$method,$param) {
$username = 'admin';
$password = '1234';
$this->load->library('curl');
$this->curl->create($url);
// Optional, delete this line if your API is open
$result_login = $this->curl->http_login($username, $password);
$this->curl->$method($param);
$result = json_decode($this->curl->execute());
return $result;
}
Viewnya juga harus disesuaikan, pada tutorial pertama tentang codeigniter hasil yang
diberikan adalah berupa array dan sekarang data yang diberikan berupa object sehingga
cara mengakses datanya pun harus kita rubah. Oke silahkan buka view/customer/edit.php
dan sesuaikan dengan script berikut :
AUTHENTIFIKASI PENGGUNA
Library rest-server ini sudah menyediakan fasilitas authetifikasi yang memudahkan kita
untuk mengatur siapa saja yang mempunyai hak akses untuk menggunakan webservice yang
kita bangun, ada beberapa jenis authentifikasi yang disediakan yaitu basic, digest dan
session, kita juga bisa menggunakan library authetification yang lain untuk library ini
|--------------------------------------------------------------------------
| REST Login
|--------------------------------------------------------------------------
|
| Set to specify the REST API requires to be logged in
|
| FALSE No login required
| 'basic' Unsecure login
| 'digest' More secure login
| 'session' Check for a PHP session variable. See 'auth_source' to set the
| authorization key
|
*/
$config['rest_auth'] = 'basic';
Anda bisa memilih salah satu jenis autentifikasi yang ingin digunakan, atau jika anda ingin
membuka akses webservice yang anda buat bisa dengan cara menmeberikan value FALSE
pada config rest_auth;
Lalu jika anda mensetting jenis authetifikasinya dengan basic atau yang lain, maka anda juga
harus menyertakan informasi authetification account yang digunakan untuk mengakses web
service, berikut ini contoh penggunaan nya :
function __execute($url,$method,$param) {
$username = 'admin';
$password = '1234';
$this->load->library('curl');
$this->curl->create($url);
// Optional, delete this line if your API is open
$result_login = $this->curl->http_login($username, $password);
// end optional for autehntification webservice
$this->curl->$method($param);
$result = json_decode($this->curl->execute());
return $result;
}
TENTANG PENULIS
Saya adalah seorang web developer dari Nanggroe
Aceh Darussalam, sekarang sedang menyelesaikan
pendidikan magister di salah satu sekolah tinggi
ilmu komputer dibandung.
HP/ WA : 089699935552
PIN BBM : 53F552DE
Email : nuris.akbar@gmail.com
Github : https://github.com/nurisakbar