Cara Membuat API Sederhana Dengan Framework CodeIgniter
Web Developer | Blogger | Creator of RubyPedia.com
19 Oktober 2017

CodeIgniter merupakan aplikasi yang bersifat open source yang berupa framework PHP dengan model MVC (Model, View, Controller) untuk membangun website dinamis dengan menggunakan PHP.

CodeIgniter memudahkan developer untuk membuat aplikasi web dengan cepat mudah dibandingkan dengan membuatnya dari awal.

Pada tutorial kali ini kita akan belajar cara sederhana membuat sebuah api dengan framework CodeIgniter, saya anggap semua sudah mengintall dan menkonfigurasi CodeIgniternya jadi langsung saja.

Buatlah sebuah database baru, dan beri nama "rubypedia" kemudian import kode berikut ini:

-- MySQL dump 10.13  Distrib 5.6.22, for osx10.8 (x86_64)
--
-- Host: localhost    Database: tutorial-ci
-- ------------------------------------------------------
-- Server version   5.7.17

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `tbl_blog`
--

DROP TABLE IF EXISTS `tbl_blog`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tbl_blog` (
  `id_blog` int(22) NOT NULL AUTO_INCREMENT,
  `judul_blog` varchar(200) NOT NULL,
  `content` text NOT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  PRIMARY KEY (`id_blog`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `tbl_blog`
--

LOCK TABLES `tbl_blog` WRITE;
/*!40000 ALTER TABLE `tbl_blog` DISABLE KEYS */;
INSERT INTO `tbl_blog` VALUES 
(1,'Belajar Membuat API dengan CodeIgniter','RubyPedia.com adalah situs yang menyediakan tutorial & screencast pemrogramman ruby dengan bahasa indonesia.','2017-10-19 06:17:23','2017-10-19 18:47:46'),
(2,'Belajar CodeIgniter di Ruby Pedia','RubyPedia.com adalah situs yang menyediakan tutorial & screencast pemrogramman ruby dengan bahasa indonesia.','2017-10-19 06:16:13','2017-10-19 15:46:49'),
(3,'CodeIgniter The Fast PHP Framework','RubyPedia.com adalah situs yang menyediakan tutorial & screencast pemrogramman ruby dengan bahasa indonesia.','2017-10-19 06:16:14','2017-10-19 15:33:39');
/*!40000 ALTER TABLE `tbl_blog` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2017-10-19 18:46:50

Jika berhasil maka akan tampil seperti berikut ini:

Langkah selanjutnya adalah:

  • Menload library Database
  • Mengatur koneksi database
  • Membuat sebuah Controller
  • Membuat sebuah Model

Aktifkan / load class Database kita di folder Application/config/autoload.php, isikan class database di autoload library:

$autoload['libraries'] = array('database');

Selanjutnya atur koneksi database kita di folder Application/config/database.php, ubahlah koneksi databasenya kurang lebih menjadi seperti berikut ini:

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root', //sesuaikan dengan username MySQL kalian
    'password' => '', //sesuaikan dengan password MySQL kalian
    'database' => 'rubypedia',
    '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
);

Selanjutnya buatlah sebuah model baru di folder Application/models beri nama Web.php dan tuliskan kodenya seperti berikut ini:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
 * @package  : API - Ruby Pedia
 * @author   : Fika Ridaul Maulayya <ridaulmaulayya@gmail.com>
 * @since    : 2017
 * @license  : https://www.rubypedia.com/
 */
class Web extends CI_Model
{

    public function get_blog()
    {
        $query = $this->db->get("tbl_blog");
        return $query->result();
    }

}

Kemudian buatlah sebuah Controller baru di folder Application/controllers dan beri nama Blog.php dan tuliskan kodenya seperti berikut ini:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
 * @package  : API - Ruby Pedia
 * @author   : Fika Ridaul Maulayya <ridaulmaulayya@gmail.com>
 * @since    : 2017
 * @license  : https://www.rubypedia.com/
 */
class Blog extends CI_Controller {

    function __construct() {

        parent::__construct();
        //load model web
        $this->load->model('web');
    }

    public function index()
    {
        //get data dari model
        $blog = $this->web->get_blog();
        //masukkan data kedalam variabel
        $data['blog'] = $blog;
        //deklarasi variabel array
        $response = array();
        $posts = array();
        //lopping data dari database
        foreach ($blog as $hasil)
        {
            $posts[] = array(
                                "id"                 =>  $hasil->id_blog,
                "judul"            =>  $hasil->judul_blog,
                "content"        =>  $hasil->content,
                "created_at"   =>  $hasil->created_at,
                                "updated_at"  => $hasil->updated_at
            );
        }
        $response['blog'] = $posts;
        header('Content-Type: application/json');
        echo json_encode($response,TRUE);

    }
}

Setelah itu jalankan aplikasi kita, dengan mengetikan di address bar browser, http://localhost/folder_project/index.php/blog, maka kalian akan melihat kurang lebih tampilan API dengan format JSON seperti berikut ini:

Blog ini telah dibaca sebanyak 5533 kali
CodeIgniter API JSON Rest API

Sekilas Tentang Penulis

Fika Ridaul Maulayya
Web Developer | Blogger | Creator of RubyPedia.com

KOMENTAR

blog comments powered by Disqus