Cara Membuat Rest API Server Dengan Codeigniter 3
API adalah singkatan dari Application Programing Interface, yaitu sebuah sofware yang memungkinkan developper dapat mengintegrasikan dan mengijinkan dua aplikasi yang berbeda secara bersamaan untuk saling terhubung satu dan lainnya, dan pada API terdapat kumpulan protokol, subroutin serta tools yang digunakan oleh beragam aplikasi software untuk melakukan komunikasi data.
Tujuan dari API adalah untuk berbagi data antar aplikasi berbeda, sehingga pengembangan aplikasi menjediakan sebuah fungsi terpisah sehingga developer tidak perlu membuat fitur serupa.
Rest API adalah dua kata yang memiliki arti berbeda, Rest adalah Representational State Transfer yaitu standar arsitektur dengan berbasis web menggunakan protokol Http dalam komunikasi data.
Restfull adalah antarmuka yang digunakan oleh sistem komputer untuk bertukar informasi secara aman melalui internet. Sebagian besar aplikasi bisnis harus berkomunikasi dengan aplikasi internet dan pihak keiga lainya untuk melakukan berbagai tugas, dengan mendukung pertukaran informasi mengikuti standar komunikasi perangkat lunak yang aman, andal dan efisien.
Adapun manfaat dari Rest API Server :
- Skalabilitas : mengoptimalkan interaksi klien-server
- Fleksibilitas dimana layanan Restfull mendukung pemisahan total klien-server sehingga masing-masing berbagai komponen server dan berbagai platform tidak mempengaruhi aplikasi klient.
- Independensi : independen terhadap teknologi yang digunakan sehingga aplikasi klien dan server dengan berbagai bahasa pemprogaman tidak mempengaruhi desain API.
Langkah-langkah membuat Restful API dengan Codeigniter 3.
1. Download Codeigniter 3 diwebsite resmi, ekstrak dalam folder httdocs XAMPP buat nama sesuai dengan keinginan:
2. Download library Codeigniter RestServer dan ekstrak didalam Codeigniter 3
Berikut struktur librari Codeigniter Restserver yang dibuat oleh Chris Kacerguis :
3. Copy rest_controller_lang.php (Language/english/) paste kedalam folder codeigniter (application/langguage/english).
4. Copy rest.php (src) paste kedalam folder codeigniter (application/config)
5. Copy Format.php dan RestController.php paste kedalam folder codeigniter (application/libraries/)
6. Seting Config Autoload aktifkan Database config autoload.php
$autoload['libraries'] = array('database');
7. Seting Database masukan user, password dan nama database. pada config database.php disesuaikan dengan nama database teman-teman di XAMPP
8. perbaiki coding yang eror pada RestController.php tabah tanda lebih besar dari (>) setelah _end_rtime :
$payload['rtime'] = $this->_end_rtime -> $this->_start_rtime;
9. Buat Database baru restapi_ci3, dan buat tabel sebagai contoh saya menggunakan data Mahasiswa, untuk struktur tabel dan database bisa di download pada akhir tutorial sekaligus dengan source code.
10. Seting rest-api pada file : rest.php (application/config)
Masuk ke file rest.php (application/config), masukan id untuk login akses ke rest api serverter terdiri dari id/username dan password seperti contoh berikut :
$config['rest_valid_logins'] = ['admin' => '1234', 'affanul' => '1234'];
Aktifkan limit true masih di file seting rest.php, dan Buat tabel Limit, untuk membatasi jumlah akses ke rest server CI3
Aktifkan limit d file seting rest.php akses ke rest api server dengan mengubah menjad true
$config['rest_enable_limits'] = true;
Buat tabel limit generate kode berikut, seperti contoh yang ada pada rest.php
CREATE TABLE `limits` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`uri` VARCHAR(255) NOT NULL,
`count` INT(10) NOT NULL,
`hour_started` INT(11) NOT NULL,
`api_key` VARCHAR(40) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Buat tabel keys untuk, untuk membatasi hanya yang memiliki keys yang bisa mengakses rest api server. masukan data key sementara.
Masukan dama key untuk akses ke API sesuai kebutuhan anda :
$config['rest_key_name'] = 'wpu-key';
Aktifkan keys
$config['rest_enable_keys'] = true;
Generate tabel key untuk membuat tabel keys, seperti contoh yang ada pada rest.php :
CREATE TABLE `keys` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`user_id` INT(11) NOT NULL,
`key` VARCHAR(40) NOT NULL,
`level` INT(2) NOT NULL,
`ignore_limits` TINYINT(1) NOT NULL DEFAULT '0',
`is_private_key` TINYINT(1) NOT NULL DEFAULT '0',
`ip_addresses` TEXT NULL DEFAULT NULL,
`date_created` INT(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Buat Controller dan Model Mahasiswa. untuk mengakses data, kemudian masukan data namespace librari Rest API yang kita download tadi
Controller Mahasiswa.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');
require APPPATH . "libraries/format.php";
require APPPATH . "libraries/RestController.php";
use chriskacerguis\RestServer\RestController;
class Mahasiswa extends RestController
{
public function __construct()
{
parent::__construct();
$this->load->model('ModelMahasiswa', 'mahasiswa');
// Membatasi Jumlah akses sesuai kebutuhan
$this->methods['index_get']['limit'] = 200;
}
// public function index_get()
// {
// $mahasiswa = $this->mahasiswa->get_mahasiswa();
// $this->response($mahasiswa, 200);
// }
// public function nim_get($id = 0)
// {
// $mahasiswa = $this->mahasiswa->get_mahasiswaById($id);
// $this->response($mahasiswa, 200);
// }
// Menampilkan data
public function index_get()
{
$id = $this->get('id');
if ($id === null) {
$mahasiswa = $this->mahasiswa->getMahasiswa();
} else {
$mahasiswa = $this->mahasiswa->getMahasiswa($id);
}
if ($mahasiswa) {
$this->response([
'status' => true,
'data' => $mahasiswa
], RestController::HTTP_OK);
} else {
$this->response([
'status' => false,
'message' => 'id not found'
], RestController::HTTP_NOT_FOUND);
}
}
// Menghapus data
public function index_delete()
{
$id = $this->delete('id');
if ($id == null) {
$this->response([
'status' => false,
'message' => 'profide an id!'
], RestController::HTTP_BAD_REQUEST);
} else {
if ($this->mahasiswa->deleteMahasiswa($id) > 0) {
// ok
$this->response([
'status' => true,
'data' => $id,
'message' => 'deleted.'
], RestController::HTTP_OK);
} else {
// id not found
$this->response([
'status' => false,
'message' => 'id not found!'
], RestController::HTTP_BAD_REQUEST);
}
}
}
// Menambah data
public function index_post()
{
$data = [
'nrp' => $this->post('nrp'),
'nama' => $this->post('nama'),
'email' => $this->post('email'),
'jurusan' => $this->post('jurusan'),
];
if ($this->mahasiswa->createMahasiswa($data) > 0) {
$this->response([
'status' => true,
'message' => 'new mahasiswa has been created.'
], RestController::HTTP_CREATED);
} else {
$this->response([
'status' => false,
'message' => 'failed to create new data!.'
], RestController::HTTP_BAD_REQUEST);
}
}
// Update data
public function index_put()
{
$id = $this->put('id');
$data = [
'nrp' => $this->put('nrp'),
'nama' => $this->put('nama'),
'email' => $this->put('email'),
'jurusan' => $this->put('jurusan'),
];
if ($this->mahasiswa->updateMahasiswa($data, $id) > 0) {
$this->response([
'status' => true,
'message' => 'data mahasiswa has been updated'
], RestController::HTTP_OK);
} else {
$this->response([
'status' => false,
'message' => 'failed to update data!.'
], RestController::HTTP_BAD_REQUEST);
}
}
}
Model Mahasiswa ModelMahasiswa.php:
<?php
class ModelMahasiswa extends CI_Model
{
public function getMahasiswa($id = null)
{
if ($id === null) {
return $this->db->get('mahasiswa')->result_array();
} else {
return $this->db->get_where('mahasiswa', ['id' => $id])->result_array();
}
}
public function deleteMahasiswa($id)
{
$this->db->delete('mahasiswa', ['id' => $id]);
return $this->db->affected_rows();
}
public function createMahasiswa($data)
{
$this->db->insert('mahasiswa', $data);
return $this->db->affected_rows();
}
public function updateMahasiswa($data, $id)
{
$this->db->update('mahasiswa', $data, ['id' => $id]);
return $this->db->affected_rows();
}
}
Selanjutnya saatnya kita ujicoba Restful API Server yang telah kita buat akses dengan menggunakan aplikasi Postman , gunakan method GET dengan alamat Rest Server Codeigniter 3 disesuaikan dengan lokasi XAMPP pada komputer masing-masing :
http://localhost/rest-api/wpu-rest-server/mahasiswa?wpu-key=wpu123
Menambah data user dan password seting terlebih dahulu tab Authorization :
Menampilkan seluruh data Mahasiswa pilih method GET dan masukan key dan value sesuai yang telah kita seting sebelumnya dengan key wpu-keu dan value wpu123:
Menampilkan data berdasar id Mahasiswa dengan metode GET masukan key dan value sesuai dengan id yang kita ingin tampilkan disini saya coba dengan key 1 sehingga menambilkan data mahasiswa dengan id 1 :
Teman-teman silahkan mencoba dengan methot PUT edit data dan DELETE untuk menghapus data pada Rest Server yang telah kita buat sesuaikan dengan ID dan data yang akan diedit ataupun dihapus, karena controler dan model telah kita buat silahkan mencoba dengan aplikasi Postman.
Akhirnya selesai juga kita membuat Restserver dengan menggunakan Codeigniter 3, adapun spesifikasi yang saya gunakan untuk membuat Restserver :
Spesifikasi :
- PHP 7.0
- Codeigniter 3.1.13
- Codeigniter Server (Chris Kacerguis)
- Postman (untuk mengakses Restserver)
Ikuti Tutorial Menarik lainnya :
- 5 Rekomendasi Template Admin Bootstrap Gratis 2022
- Aplikasi Buku Tamu Online Berbasis Web Dengan Codeigniter 3
- Sistem Informasi Arsip Surat Berbasis Web
Terima kasih teman – teman telah membaca sampai selesai tulisan ini, sumber tutorial ini gabungan dari tutorial chanal Youtube WPU Unpas dan Adi Chandra Setiawan ada beberapa bagian yang tidak sama dengan di chanel WPU sehingga saya gabungkan dengan Chanel Adi Chandra didalam membuat Restserver dengan CI3, semoga tutorial ini bermanfaat, berikut Source Code RestServer dengan Codeingiter 3