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
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.
Selain itu saat saya cek juga di github, pada tahun 2015 ada yang mencoba diantara Slim vs Lumen dan berikut hasilnya
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.
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
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
pilih methodnya POST dan formnya x-www-form-urlencoded lalu masukkan key requestnya.
Jika berhasil maka kamu akan mendapatkan response seperti ini
Sekarang akses ke localhost:8000/todo dan lihat hasilnya yaitu sbb:
Sekarang coba akses dengan memanggil id nya, dengan cara request ke localhost:8000/todo/{id}
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)
and it works!
dan sekarang coba hapus data, lari ke endpoint localhost:8000/todo/{id} dengan method DELETE
it works!
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.