Kelebihan menggunakan Code Igniter 3 adalah di handling file. Struktur filenya lebih lengkap dan lebih bagus, selain itu tersedianya active record yang memudahkan kita untuk koneksi dengan database. Tapi kalau dari segi kecepatan SLIM Framework lebih bagus. Show
Code Igniter 3 adalah framework PHP dengan konsep MVC, meskipun framework ini sudah kalah populer dibanding Laravel, tapi pemakai di Indonesia masih banyak, terutama kaum tua yang masih suka native. Kalau yang muda-muda dan energik lebih suka pakai laravel yang "Wow" banget. Code Igniter 3 bisa digunakan untuk membuat aplikasi apa saja, termasuk juga dengan rest service. namun supaya lebih mudah, kita perlu menambahkan library yang dibuat oleh mas Chris Kacerguis. Kelebihan Menggunakan Code Igniter dan Library Rest Server
Kodingan Lebih TerstrukturKelebihan dari menggunakan framework adalah kodingan yang lebih terstruktur sehingga lebih mudah dikembangkan dan dimaintenance. Selama ini sih aku asik-asik saja dengan kesederhanaan Code Igniter 3. Dan karena kesederhanaannya itulah struktur file dan kodingnya lebih mudah dibaca. Bisa Mengikuti Paradigma Restfull ServiceRESTfull Service memiliki beberapa method diantaranya adalah GET, POST, PUT, DELETE. Method yang sering digunakan adalah GET dan POST. Seringkali apapun transaksinya, GET dan POST methodnya. Padahal kalau menggunakan pakem Restfull, seharusnya kita menggunakan method PUT dan Delete. Respon Code Bisa DisesuaikanDengan Code Igniter 3 dan Rest Servernya, pengelolaan http response code menjadi lebih mudah. Dengan http response code yang baik, client maupun developer jadi lebih mudah mengelola dan memaintenance aplikasi. PERSIAPANSebelum memulai koding yang super simpel dan mudah, siapkan dulu bahan-bahan yang akan diolah: Install Web ServerCode Igniter 3 bisa berjalan di server apapun yang support PHP. Untuk proses dev di komputer lokal, kamu bisa menggunakan xampp.
Install ComposerComposer adalah depencies injection untuk PHP. Composer dapat di download di: https://getcomposer.org/download/
Pengguna windows yang males ribet bisa langsung mendownload installer versi windowsnya. Tapi kalau mau kelihatan keren pakai command sih nggak apa-apa. Kerenmu nggak ada yang lihat juga. Install Code Igniter 3Versi terbaru Code Igniter adalah versi 4. Tapi, untuk sebagian orang Code Igniter 3 dengan segala kesederhanaanya sudah mampu memenuhi kebutuhan mereka. Dan di artikel ini aku menggunakan Code Igniter 3, jadi jangan salah download ya.
1. Kunjungi laman download code igniter di https://codeigniter.com/download 2. Pilih Code Igniter 3. download code igniter 33.Buat folder di folder htdocs, misalnya restapi. 4. Extract file zip Code Igniter 3 tadi, pindahkan source codenya ke folder restapi yang sudah kita siapkan di htdocs. folder restapi di htdocs
4. Code Igniter 3 siap digunakan. Install rest api librarylangkah selanjutnya adalah menginstall rest api library dari Chris Kacerguis. Supaya terlihat kekinian, kita install librarynya dari composer. Kebetulan aku menggunakan Visual Code buat koding, jujur saja aku suka dengan fitur terminalnya. Lebih mudah, ringkas dan terlihat expert, padahal masih beginer. 1. Buka folder source dengan Visual Code, cara yang mudah dan terlihat keren untuk membuka visual code adalah dengan membuka command prompt, kemudian ketikkan "code [pathfolder]". [path folder] diisi path lengkap folder restapi, misalnya c:\xampp\htdocs\restapi. 2. Ubah file composer.json. Bagian "require dev" dihilangkan saja, soalnya pas di composer update bikin error. Kalau kamu butuh nanti dinstall manual saja. Kemudian tambahkan "chriskacerguis/codeigniter-restserver": "dev-master" letakkan dibagian "require". File composer.jsonnya jadi seperti ini: { "description": "The CodeIgniter framework", "name": "codeigniter/framework", "type": "project", "homepage": "https://codeigniter.com", "license": "MIT", "support": { "forum": "http://forum.codeigniter.com/", "wiki": "https://github.com/bcit-ci/CodeIgniter/wiki", "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/bcit-ci/CodeIgniter" }, "require": { "php": ">=5.3.7", "chriskacerguis/codeigniter-restserver": "dev-master" }, "suggest": { "paragonie/random_compat": "Provides better randomness in PHP 5.x" } } 2. Aktifkan terminal, klik menu "Terminal", pilih "New Terminal". menu terminal visual code 3. Masuk ke jendela terminal di jendela paling bawah, kemudian ketikkan "composer update", tunggu prosesnya sampai selesai. Install library rest-api 4.Buat file Api.php di Application\controller, masukkan contoh kode berikut: <?php defined('BASEPATH') OR exit('No direct script access allowed'); use chriskacerguis\RestServer\RestController; class Api extends RestController { function __construct() { // Construct the parent class parent::__construct(); } public function users_get() { // Users from a data store e.g. database $users = [ ['id' => 0, 'name' => 'John', 'email' => '[email protected]'], ['id' => 1, 'name' => 'Jim', 'email' => '[email protected]'], ]; $id = $this->get( 'id' ); if ( $id === null ) { // Check if the users data store contains users if ( $users ) { // Set the response and exit $this->response( $users, 200 ); } else { // Set the response and exit $this->response( [ 'status' => false, 'message' => 'No users were found' ], 404 ); } } else { if ( array_key_exists( $id, $users ) ) { $this->response( $users[$id], 200 ); } else { $this->response( [ 'status' => false, 'message' => 'No such user found' ], 404 ); } } } }
5. Pada contoh diatas kita membuat rest api untuk service get. Buka alamat api lengkap dengan endpointnya di browser, contoh kita memanggil service get users: Hasilnya seperti ini: tampilan pertama rest api, halamannya error Konfigurasi Awal Rest APISebelum bisa digunakan sebagai mestinya, kita perlu mengkonfigurasi code igniter dan library rest apimya terlebih dahulu. 1. Buka file config.php di folder "application\config", kemudian lihat pada baris ke 139, tepatnya ke konfigurasi composer autoload. ubah nilai FALSE menjadi: $config['composer_autoload'] = FCPATH . 'vendor/autoload.php'; 2. Buka kembali alamat api lengkap dengan endpointtnya http://localhost/restapi/index.php/api/users Kalau tampilannya seperti dibawah ini, berarti rest apimu sudah berhasil. Koneksi Rest Api Server Dengan DatabaseKelebihan dari Code Igniter 3 dengan SLIM PHP salah satunya handling databasenya. Sebenarnya kita bisa menggunakan SLIM rest api skeleton yang sudah paket lengkap dengan ORM, template dan lain sebagainya. Tetapi karena aku sudah terlanjur nyaman dan mager dengan active record sederhana dari Code Igniter 3, maka aku lebih memilih Code Igniter 3.
Buat Database, tabel dan isi tabelnyaSeperti biasa, sebelum mengkonfigurasi database, kita buat dulu database, tabel beserta isinya. Sebagai contoh buatlah database sekolah, kemudian buat tabel siswa yang berisi nama siswa dan nis (nomor induk sekolah). Untuk memudahkan teman-teman, aku buatkan script sqlnya nih.
/* Config Database di Code Igniter 3File konfigurasi database code igniter 3 ada di file "application\config\database.php" Letak file konfigurasi database Masukkan informasi database ke array database. Kalau diinstall di lokal, ubah nilai username, password dan databasenya. $active_group = 'default'; $query_builder = TRUE; $db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'sekolah', '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 ); Aktifkan Autoload Library DatabaseJangan lupa aktifkan library database di autoload Code igniter 3, letaknya ada di "Application\config\autoload.php" letak file autoload.php pada baris ke 61 kamu akan menemukan kode ini: $autoload['libraries'] = array(); Masukkan database ke dalam array, kodingannya jadi seperti ini: $autoload['libraries'] = array('database'); Oke, konfigurasi database sudah selesai, sekarang kita coba membuat service REST API. MEMBUAT SERVICE REST APIMembuat service rest api dengan Code Igniter 3 dan library rest api ini sangat mudah. Perhatikan pada file Api.php di folder "application\controller". Sekilas tentang REST APIAPI singkatan dari Aplication Programming Interface. Secara sederhana pengertian API adalah pintu yang disediakan oleh suatu aplikasi supaya aplikasi lainnya dapat berinteraksi dengan dirinya. Selain method "GET" dan "POST" ada juga methode "PUT" dan "DELETE". berikut ini standart penggunaan method-method diatas: GET = Digunakan untuk mengambil data, ketika kalian membuka alamat suatu web. Secara tidak langsung kalian sudah menggunakan method "GET". POST = Digunakan untuk mengirim data. Dalam RESTfull Web Service. Method "POST" digunakan untuk membuat data baru. PUT = Method PUT dalam Restfull Web Service biasanya digunakan untuk perintah update/ubah data. DELETE = Seperti namanya, method ini digunakan untuk menghapus data. Aplikasi Untuk Mencoba REST APIBanyak sekali aplikasi yang bisa digunakan untuk mengakses web service, aplikasi ini disebut "REST Client". Sebenarnya kalian juga bisa menggunakan browser. Tetapi browser hanya bisa digunakan untuk "GET" saja. Aplikasi Rest Client yang umum digunakan diantaranya adalah:
Dalam web ini aku menggunakan POSTMAN sebagai rest client. MEMBUAT METHOD GETMethod "GET" digunakan untuk melihat data. di Code Igniter 3 + library Rest Server ini. Untuk membuat perintah get sangat mudah. Kamu tinggal membuat fungsi baru yang dibelakang fungsinya ditambah "_get". Buka file Api.php di folder "Application\controllers\"tambahkan fungsi baru dibawah fungsi __construct contohnya seperti dibawah ini:
public function siswa_get(){ $this->db->select('*'); $data = array ('data'=>$this->db->get('siswa')->result()); $this->response($data, 200 ); } Testing APIBuka Aplikasi POSTMAN, pilih mehod "GET", kemudian masukkan url lengkap dengan endpointnya: Hasilnya seperti dibawah ini: Hasil request getMEMBUAT METHOD POSTMethod POST digunakan untuk mengisi nilai baru, Sebenarnya para programmer web sudah sangat familiar dengan method "POST" ini. Method POST biasanya dipakai untuk mengirim isi form ke server.
Hampir sama dengan perintah get, untuk membuat perintah post kita buat fungsi baru. Buka file Api.php di folder "Application\controllers\"tambahkan fungsi baru dibawah fungsi get yang tadi kita buat. contoh perintah post adalah sebagai berikut: public function siswa_post(){ $isidata = array('nis'=>$this->input->post('nis'), 'namasiswa'=>$this->input->post('nama')); $this->db->insert('siswa', $isidata); $this->response(array("pesan"=>"berhasil"), 200); } Coba lihat, apa perbedaan antara fungsi GET dan POST? Sudah dilihat kan? kalian pasti sudah tahu perbedaannya. Perbedaannya hanya di bagian belakang nama fungsi. pada fungsi get, penulisannya namafungsi + "_get", sedangkan pada post namafungsi + "_post". Sangat mudah bukan. Hal yang sama juga berlaku pada method "PUT" dan "DELETE".
Eh iya, jangan lupa screenshot hasil test di POSTMAN. sebagai bukti kalau source code ini bukan hoax. hasil postman berhasil insert data MEMBUAT METHOD PUTAda sedikit perbedaan ketika membuat method PUT. Di Code Igniter, fungsi input hanya digunakan untuk method GET dan POST. Nah untuk PUT kita menggunakan fungsi $this->put.
Kode lengkapnya seperti berikut: public function siswa_put(){ $isidata = array('namasiswa'=>$this->put('namasiswa')); $this->db->where(array('nis'=>$this->put('nis'))); $this->db->Update('siswa', $isidata); $this->response(array("pesan"=>"Ubah Data Berhasil"), 200); } perbedaan juga ada di akses postmannya, kalau di POST kita bisa menggunakan form-data. di put kita menggunakan application/x-www-form-urlencoded Bukti di POSTMAN Ubah Data Dengan PUTHasil di method GET: Hasil Method GET Setelah Ubah DataMEMBUAT METHOD DELETEMethod terakhir yang kita bahas di artikel ini adalah method "DELETE". Huff akhirnya kelar juga. Langsung ke sourcenya saja ya. public function siswa_delete(){ $this->db->where('nis', $this->delete('nis')); $this->db->delete('siswa'); $this->response(array("pesan"=>"data berhasil dihapus"), 200); } Sama seperti PUT, dipostman kita menggunakan application/x-www-form-urlencoded contohnya seperti ini: Contoh akses service Delete di POSTMANDan hasil di method get adalah hasil hapus di cek dengan method GETBukan sulap bukan sihir, bukan pula buah duren. No NIS yang tadi dimasukkan ke method delete sudah terhapus. PENUTUPAkhirnya kelar juga pembahasan membuat Rest api dengan code igniter. Sepertinya yang dibahas disini lebih lengkap dari pada yang SLIM kemarin ya hehe. Jujur saja untuk Rest kedepannya kayaknya aku bakal pakai yang Code Igniter 3 deh. Apalagi kemarin baca-baca di githubnya Code Igniter 3, CI 3 bisa berjalan lancar di PHP 7.
Peernya saat ini adalah mengaplikasikan JWT ke Api ini. Kapan-kapan kita bahas lagi OK. Thanks sudah mampir, feel free to ask, aku juga feel free to answer kok. Maaf aku tidak menyediakan source code langsung ya. Budayakan ATM dengan menulis ulang atau mengikuti step-step yang telah dijelaskan. Kalau masih kurang jelas ya maafken, sebagai manusia aku punya banyak kekuranga. Tapi jika ada kelebihannya, sungguh itu karena Allah. |