Membuat API dengan Micro-framework Lumen

Lumen merupakan salah satu micro-framework yang dikembangkan oleh Taylor Otwell, pengembang yang berada di balik framework PHP paling populer saat ini, Laravel. Bisa dibilang, Lumen adalah adik kecil dari Laravel.

Tulisan ini merupakan bagian ke 1 dari total 13 dalam seri Membuat Api dengan Micro-framework Lumen.

Jika Laravel dibuat untuk pengembangan full-stack web, maka Lumen lebih dikhususkan untuk pembuatan API. Itulah kenapa, beberapa fitur yang ada di Laravel dipangkas dan tidak tersedia di Lumen. Walau begitu, Lumen punya performa yang lebih baik dalam menangani permintaan (request) dibandingkan Laravel.

Lumen PHP Micro Framework By Laravel

Jika kalian terbiasa mengembangkan aplikasi berbasis web dengan Laravel, pada dasarnya, tidak ada bedanya ketika menggunakan Lumen. Controller, Request, Model, sampai dengan View, memberikan pengalaman yang sama dengan Laravel.

Salah satu yang saya suka dari Lumen adalah, kita bisa memindahkan aplikasi dari Lumen ke Laravel tanpa banyak perubahan. Menarik bukan?

Kebutuhan Sistem

Sampai seri ini ditulis, saya sendiri menggunakan Lumen versi 5.4 dan PHP 7.1 serta menggunakan sistem operasi Arch Linux. Ke depannya, versi ini akan terus saya gunakan sebagai bahan tulisan.

Kalian bisa menggunakan versi yang berbeda, selama spesifikasi perangkat lunak pendukung di mesin lokal sesuai dengan kebutuhan sistem Lumen.

Berikut kebutuhan sistem Lumen untuk versi 5.4.

  • PHP >= 5.6.4
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Mbstring PHP Extension

Instalasi

Sama seperti Laravel, instalasi di Lumen juga disediakan beberapa cara. Ketiganya tetap membutuhkan koneksi internet.

Cara paling direkomendasikan adalah menggunakan Lumen Installer. Bagi kalian yang merasa sedikit kerepotan untuk mengkonfigurasi Lumen Installer, bisa menggunakan cara alternatif, yaitu instal langsung melalui Composer.

Instal Composer jika belum ada di mesin lokal.

$ sudo pacman -S composer

// untuk ubuntu
$ sudo apt install composer

Instal Lumen pada direktori yang dikehendaki.

$ composer create-project laravel/lumen lumen-api

// masuk ke direktori instalasi
$ cd lumen-api

Konfigurasi

Lumen sudah siap digunakan. Tapi sebelum dapat digunakan sepenuhnya, ada beberapa konfigurasi dalam berkas .env yang harus disesuaikan. Buka berkas .env, adapun isi bawaan berkas tersebut adalah sebagai berikut.

APP_ENV=local
APP_DEBUG=true
APP_KEY=
APP_TIMEZONE=UTC

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=memcached
QUEUE_DRIVER=sync

Yang paling utama adalah mengisi nilai dari APP_KEY dengan string acak sepanjang 36 karakter. Tidak seperti Laravel yang menyediakan key generator dari Artisan (php artisan key:generate), di Lumen tidak ada tool yang berfungsi serupa. Jadi, kita harus mengisinya secara manual. Kalian bisa menggunakan tool daring berikut untuk mempermudah pembuatan key.

Perubahan selanjutnya adalah opsi, yaitu APP_TIMEZONE. Sesuaikan dengan waktu zona aplikasi digunakan. Umumnya, bagi developer dan pemakai aplikasi di Indonesia, mengunakan “Asia/Jakarta” sebagai nilainya.

Terakhir, jika kalian belum menginstal Memcached di mesin lokal, ganti nilai APP_KEY menjadi “file” untuk menghindari pesan kesalahan tidak ditemukannya librari tersebut.

Menjalankan Lumen

Lagi-lagi, Lumen tidak menyediakan tool untuk menjalankan built-in web server layaknya Laravel (php artisan serve). Tapi tenang, kita bisa menggunakan built-in web server langsung dengan PHP.

$ php -S localhost:8000 -t public

Kemudian akses aplikasi Lumen dari browser dengan URL seperti yang tertera di atas. Jika tidak ada kendala, kalian sudah satu langkah menuju seri berikutnya.

***

Sampai di sini, kalian sudah bisa menginstal, mengkonfigurasi, dan menjalankan Lumen melalui browser dengan built-in web server. Tulisan berikutnya akan menjabarkan pengaturan pangkalan data (database), pembuatan controller dari titik awal, mengatur route, memroses permintaan, sampai dengan mengembalikan response. 😉

Tinggalkan Balasan