Slim Framework Tutorial : Berkenalan Dengan Slim, PHP Micro Framework

Slim Framework

Lagi-lagi mata belum bisa terpejam. Masih setia di depan laptop padahal hari ini saya bisa dikatakan libur dari kerjaan. Nah, berhubung libur saya mau refreshing dulu nih. Kalau ada waktu kosong seperti ini saya coba untuk belajar sesuatu yang aneh dan memang sudah saya siapkan dari dulu. Karena ada kerjaan, jadi masuk list to do terlebih dahulu. Tadi malam, iseng-iseng saya nyobain Slim Framework, salah satu micro php framework. Kesan pertama pas nyobain micro php framework yang satu ini, kereen juga :D. Routing-nya nyaman menurut saya dan cukup powerfull untuk digunakan sebagai RESTful API. Biar gak lupa hasil belajar tadi malam :D, kali ini saya coba untuk menulisnya disini. Cekibrooottt,,,

1. Tutorial instalasi di website resminya sudah sangat jelas. Kita bisa menggunakan composer maupun instal secara manual. Berhubung saya lagi kesemsem sama yang namanya composer, jadi saya pakai tools yang satu ini saja 😀

2. Buka terminal/console, kita akan mengunduh composer terlebih dahulu. Masuk ke direktori htdocs, buat folder dengan nama “slim-fw” dan jalankan perintah berikut :

 curl -s https://getcomposer.org/installer | php -d detect_unicode=Off 

3. Buat sebuah file dengan format .json yang berisi nama package dari Slim Framework yang akan kita gunakan. Beri nama composer.json dan letakkan di dalam folder “slim-fw” yang telah kita buat.

{
    "require": {
        "slim/slim": "2.*"
    }
}

4. Jalankan composer untuk mengunduh package yang telah kita defisinikan di file composer.json

 php composer.phar install 

5. Setelah selesai, maka akan folder baru di dalam folder slim-fw yang telah kita buat tadi. Berisikan file dari Slim Framework. Kita akan menuliskan kode aplikasi kita di dalam folder /vendor/slim/slim/index.php.

6. Slim Framework ini mengimplementasikan HTTP method yang sering kita gunakan untuk membuat sebuah RESTful API. Seperti method GET, POST, PUT, dan DELETE. Untuk penjelasan lebih lanjut tentang REST API, monggo kunjungi link berikut, http://www.restapitutorial.com/

HTTP Method

Nah, sekarang Slim Framework sudah nangkring di localhost kita. Kalau langsung kita akses dengan alamat http://localhost/slim-fw/vendor/slim/slim/, akan muncul welcome screen yang menginformasikan Slim Framework berhasil diinstal. Sekarang kita akan mencoba untuk menampilkan tulisan “Hello World”, tentunya dengan menggunakan routing GET.

<?php
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();

$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
    echo "Hello, $name";
});
$app->run();

Hasilnya bisa diakses melalui alamat http://localhost/slim-fw/vendor/slim/slim/hello/world. Parameter terakhir bisa diubah sesuai keperluan dan nanti ditampilkan sebagai variabel. Sekarang mari kita coba contoh routing lainnya dengan menampilkan data dari database.

1. Disini saya coba membuat sebuah tabel sederhana yang nanti datanya akan kita tampilkan melalui routing GET.


CREATE TABLE dlmbg_sitemap (
  id_peta int(5) NOT NULL AUTO_INCREMENT,
  judul varchar(100) NOT NULL,
  keterangan text NOT NULL,
  gambar varchar(100) NOT NULL,
  koordinat_lat varchar(150) NOT NULL,
  koordinat_lang varchar(150) NOT NULL,
  PRIMARY KEY (id_peta)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

2. Pada routing get seperti contoh di atas, ada 2 parameter yang wajib kita isi. Di parameter yang pertama untuk alamatnya dan yang kedua untuk nama method/action yang akan dipanggil. Disini saya buat 3 buah method yaitu untuk koneksi, menampilkan semua data, dan menampilkan salah satu data sesuai parameter di url.

<?php
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();

$app = new \Slim\Slim();

$app->get('/sitemap/', 'getSitemap');
$app->get('/sitemap/:id', 'getSitemapDetail');

$app->run();

function getSitemap() {
    $sql = "select * FROM dlmbg_sitemap";
    try {
        $db = getConnection();
        $stmt = $db->query($sql);
        $wines = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        echo '{"data": ' . json_encode($wines) . '}';
    } catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}';
    }
}

function getSitemapDetail($id) {
    $sql = "select * FROM dlmbg_sitemap where id_peta='".$id."'";
    try {
        $db = getConnection();
        $stmt = $db->query($sql);
        $wines = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        echo '{"data": ' . json_encode($wines) . '}';
    } catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}';
    }
}

function getConnection() {
    $dbhost="127.0.0.1";
    $dbuser="root";
    $dbpass="";
    $dbname="db_peta";
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $dbh;
}

3. Sekarang kita coba di browser melalui alamat berikut :

http://localhost/slim-fw/vendor/slim/slim/sitemap

http://localhost/slim-fw/vendor/slim/slim/sitemap/1

Cukup mudah kan 😀 ,,?? Slim Framework ini cocok untuk membuat sebuah RESTful API, tinggal kita tambahkan untuk register key-nya seperti pada web-web pada umumnya yang menyediakan API untuk developer pihak ketiga. Di postingan selanjutnya, saya akan mencoba untuk membahas tentang pembuatan RESTful API dengan Slim Framework.

Ngomong-ngomong, kalau buat RESTful API kayaknya kelihatan gak keren lagi deh di mata pak dosen =)). Yaw maklumlah, saya juga masih belajar, masih anak kemarin sore yang baru melek teknologi. Jadi yaw mainannya ginian aja, beda sama pak dosen yang udah S2. Kan mana mungkin otak lulusan SMK bisa ngalahin otak lulusan S2 :p

“Stay Foolish, Stay Hungry”

Happy Blogging and Keep Coding

Cheerrrss….!!!!

4 comments

  1. avew Reply

    mas boleh minta penjelasan pembuatan Restful API yang bisa dibilang sudah memenuhi security itu seprti apa mas ?misal pake token or apa ?
    saya masih bingung implementasinya 😀

    • Gede Lumbung Post authorReply

      kalo yang saya tau, bisa pakai api key dan token,,
      di postingan yg baru udah saya coba ulas tentang restful api yg pakai api key 🙂