Module Beginner 30 Desember 2017

Tutorial CRUD Lumen 5.4 : Microframework RESTful API untuk Laravel

Halo semua! Pada pagi ini gue ingin mengenalkan sebuah Microframework dari Laravel yang dikhususkan untuk RESTful API.

Tutorial CRUD Lumen 5.4 : Microframework RESTful API untuk Laravel

Image Halo semua! Pada pagi ini gue ingin mengenalkan sebuah Microframework dari Laravel yang dikhususkan untuk RESTful API. Kenapa sih Lumen dikhususkan untuk RESTful API ?Seperti yang kita ketahui, Laravel kan adalah salah satu Framework PHP yang sedang hype nih! Nah untuk membuat Laravel tetap diminati dari segala sektor baik Web Application maupun REST API, maka dari itu Laravel membuat Microframework. Lumen sendiri ini memang menjadi tandingan bagi framework lainnya seperti Slim, dan Silex. Bahkan menurut benchmarking yang dilakukan Lumen diwebsitenyasendiri. Lumen mampu menahan hingga 1900 Request Per Second. Waw! Amazing untuk Microframework.

Image Selain itu saat saya cek juga di github, pada tahun 2015 ada yang mencoba diantara Slim vs Lumen dan berikut hasilnya

Image Well tentunya sekarang Slim dan Lumen sudah semakin baik, tinggal kalian saja lebih cocok pake yang mana :) Sebelum kalian lanjut ada yang perlu diketahui terlebih dahulu, Pada default installer, Lumen sudah menaikkan versi ke 5.5 (Bersamaan dengan Laravel 5.5) namun pada pembuatan project ini gue menggunakan Lumen 5.4, Kenapa? Karena PHP yang gue gunakan masih PHP 5.6 (ada project yang ga support di PHP 7 T.T). So bagi kalian yang belum upgrade PHP 7 its okay, gue akan kasitau cara install Lumen 5.4. Nah bagi yang sudah PHP 7 tinggal ikutin saja! Cek spesifikasi requirement kaliandisini! Oke So let’s start with the code Pertama, Mari kita buat project Lumen dengan cara sbb: Bagi yang sudah PHP 7 akan menginstall Lumen 5.5

composer create-project laravel/lumen todoLumen --prefer-dist

Bagi yang masih PHP 5.6 dan otomatis harus menggunakan Lumen 5.4

composer create-project laravel/lumen todoLumen "5.4.*" --prefer-dist

Kedua, mari tunggu hingga project selesai dibangun Ketiga, buka .env kalian dan edit bagian CACHE_DRIVER

CACHE_DRIVER=file

Defaultnya adalah Memcached, tapi entah kenapa kalau pake Memcached suka error gitu, waktu gue solving pakenya file. Keempat, buka bootstrap -> app.php dan UNCOMMENT bagian ini

$app->withFacades(); //baris 26

$app->withEloquent();
$app->register(App\Providers\AppServiceProvider::class); //baris 81
$app->register(App\Providers\AuthServiceProvider::class);
$app->register(App\Providers\EventServiceProvider::class);

Pada defaultnya, baris tersebut di comment oleh Settingan awal Lumen, tugas kita adalah membuka coment tersebut (UNCOMMENT). Kenapa? Supaya kita bisa menggunakan fitur-fitur Lumen yang dibutuhkan untuk membuat REST API. Sekarang saatnya membuat migration as usually, nah pastikan kalian telah membuat database ya dan sesuaikan nama database kalian di .ENV

DB_DATABASE=todolumen
DB_USERNAME=root
DB_PASSWORD=''

nama DB gue adalah todoLumen karena kita akan membuat RESTful API Todo List (kenapa harus Todo List? Siapa tau ada Developer Android yang sedang belajar buat API dan mampir di blog gue HEHEHEHE) Oke setelah ready sekarang saatnya buat migration!

php artisan make:migration table_todo  --create=todo

masuk ke database->migration->table_todo.php dan silahkan disamakan

public function up()
{
Schema::create('todo', function (Blueprint $table) {
$table->increments('id');
$table->string('activity',200);
$table->text('description');
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::create('todo', function (Blueprint $table) {
//
});
}

Lalu jalankan fungsi ini

php artisan migrate

Jika sudah berarti saatnya sekarang kita membuat controller. mau pake php artisan? EITS! Tunggu dulu, ini kita menggunakan Microframework and its mean udah banyak library bawaan Laravel yang sudah dicopot, fungsinya apa? ya biar makin ringan, makanya size folder Lumen engga akan sebesar defaultnya Laravel.

Image Okay so bagaimana cara membuatnya ? Ya ada cara gampang sih, kita masuk ke App->Http->Controllers nah didalam sini tentunya kita melihat ExampleController.php, buka filenya dan copy aja seluruh file yang ada di dalem. Sekarang kita akan membuat class baru, buat aja todoController.php dan paste semua isi file ExampleController.php nanti jadinya kaya gini

<?php

namespace App\Http\Controllers;

class todoController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//
}

//
}

Yup kita berhasil membuat satu controller, sekarang saatnya membuat Model! Nah caranya masih sama, masuk ke folder App dan kita melihat Model User.php disana, copy saja seluruh isinya, dan buat file baru, berinama ModelTodo.php dan paste seluruh isi file User.php disana. Tapi tunggu dulu, kita harus merombak agar tidak menggunakan semuanya, lihat contoh saya dibawah setelah merombak hasil copy code dari User.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
protected $table = 'todo'; //nama table yang kita buat lewat migration adalah todo
}

Setelah membuat model, saatnya kita mulai coding! Untuk ngerasain gimana caranya untuk nge jalanin Lumen kita, caranya gak seperti Laravel, tapi ada cara lain untuk Lumen yaitu dengan cara

php -S localhost:8000 -t ./public

Karena artisan serve gabisa dipake (udah dihapus dari vendornya) makanya untuk ngejalanin Lumen kita harus jalanin fungsi seperti itu. Sekarang coba akses dulu ke localhost:8000 dan pasti kalo berhasil kalian akan mendapatkan seperti ini

Image Nah sekarang saatnya ngoprek Controllernya, masuk ke todoController.php dan masukkan fungsi dibawah ini

public function index(){
$data = ModelTodo::all();
return response($data);
}
public function show($id){
$data = ModelTodo::where('id',$id)->get();
return response ($data);
}
public function store (Request $request){
$data = new ModelTodo();
$data->activity = $request->input('activity');
$data->description = $request->input('description');
$data->save();

return response('Berhasil Tambah Data');
}

jangan lupa di import terlebih dahulu Modelnya dipaling atas file dengan cara

use App\ModelTodo;

nah sekarang buka routes->web.php dan masukkan endpoint dibawah ini

$app->get('/todo', 'todoController@index');
$app->get('/todo/{id}', 'todoController@show');
$app->post('/todo', 'todoController@store');

Sekarang buka postman dan jalankan pada gambar dibawah ini

Image pilih methodnya POST dan formnya x-www-form-urlencoded lalu masukkan key requestnya. Jika berhasil maka kamu akan mendapatkan response seperti ini

Image Sekarang akses ke localhost:8000/todo dan lihat hasilnya yaitu sbb:

Image Sekarang coba akses dengan memanggil id nya, dengan cara request ke localhost:8000/todo/{id}

Image Nah udah berhasil nih CREATE dan READ, sekarang tinggal UPDATE dan DELETE. Tambahkan dua fungsi ini ke todoController.php

public function update(Request $request, $id){
$data = ModelTodo::where('id',$id)->first();
$data->activity = $request->input('activity');
$data->description = $request->input('description');
$data->save();

return response('Berhasil Merubah Data');
}

public function destroy($id){
$data = ModelTodo::where('id',$id)->first();
$data->delete();

return response('Berhasil Menghapus Data');
}

Sekarang edit routes kita,

$app->put('/todo/{id}', 'todoController@update');
$app->delete('/todo/{id}', 'todoController@destroy');

Lets code! coba ke localhost:8000/todo/{id} dengan methode PUT (mengubah)

Image and it works!

Image dan sekarang coba hapus data, lari ke endpoint localhost:8000/todo/{id} dengan method DELETE

Image it works!

Image Well itu saja yang dapat saya sampaikan, happy coding!


Artikel ini merupakan konten legacy dari blog Medium (Tahun 2017). Beberapa konsep atau sintaks mungkin sudah mengalami perubahan pada versi terbaru.