Showing posts with label slim. Show all posts
Showing posts with label slim. Show all posts

Tuesday, August 14, 2018

Membangun REST API menggunakan Framework Slim PHP

Pada salah satu project penelitian saya tentang sinkronisasi database, dimana terdapat 2 aplikasi yaitu: rest api dan android, saya berkesempatan menggunakan Framework Slim PHP untuk membangun aplikasi rest api. 

Ternyata Slim menawarkan kemudahan dalam membangun rest api. Detailnya bisa langsung menuju ke official web dari Slim di tautan berikut: https://www.slimframework.com/

Untuk memulai menggunakan Slim cukup mudah, silahkan dari command atau terminal ketikan perintah berikut ini:
composer require slim/slim "^3.0"
Jika komputer anda belum terinstal composer, silahkan bisa download dari tautan berikut ini.

Setelah anda jalankan perintah composer tersebut, maka akan akan ter-create folder /vendor dan file composer.json dan composer.lock.

Selanjutnya kita buat 1 file index.php dengin menambahkan code seperti dibawah ini:
<?php

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require 'vendor/autoload.php';
$app = new \Slim\App();

$app->get('/', function (Request $req,  Response $res, $args = []) {
    return $res->getBody()->write('Hello Slim Framework');
});

$app->run();
Anda bisa cek hasilnya melalui browser ke alamat project yang anda buat, atau bisa juga menjalankan menggunakan internal web server dari php dengan menjalankan perintah berikut ini melalui command atau terminal pada path project anda:
php -S localhost:8090
Dan akses melalui browser di alamat http://localhost:8090

Untuk mendapatkan output dalam format json, bisa anda ubah pada baris ke 10 dengan code berikut ini:
$data = array("hello" => "slim framework", "version" => "3.10");
return $res->withJson($data);
Maka akan diperoleh hasil seperti berikut ini:
{"hello":"slim framework","version":"3.10"}
Untuk menambahkan end-point yang lain pada rest api anda tinggal menambahkan code seperti pada baris-9 sampai baris-11 pada contoh code sebelumnya. Misalkan berikut ini end-point yang akan membaca parameter dari alamat web
$app->get('/name/{you}', function (Request $req,  Response $res, $args = []) {
    $name = $args['you'];
    $data = array("hello" => $name, "message" => "have a nice day");
    return $res->withJson($data);
});
Dan anda bisa melihat hasilnya dengan akses ke alamat http://localhost:8090/name/arif laksito, maka akan terlihat hasilnya di halaman browser. Perhatian, untuk web server Apache atau Nginx anda perlu menambahkan file .htaccess pada project anda supaya alamat web tersebut dapat dikenali. Berikut ini script dari file .htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
Selain method GET seperti pada contoh diatas, anda bisa juga menggunakan method yang lainnya seperti POST, PUT, DELETE. Begitulah cerita saya dalam menggunakan Slim framework, lebih detail lagi anda bisa menuju ke halaman dokumentasi/manual dari Slim framework yang sudah cukup lengkap di https://www.slimframework.com/docs/.

Untuk contoh file project yang menggunakan Slim bisa anda dapatkan/clone di github saya dengan alamat https://github.com/ariflaksito/web-data-sync. Pilih di branch basic, karena branch master sudah terupdate fitur menggunakan Eloquent dan Middleware untuk validasi token. InshaAllah akan saya share juga artikel tentang penggunaan Eloquent dan Middleware tersebut.

Semoga bermanfaat, jangan lupa untuk dicoba yaa