Tutorial Membuat RESTful API CRUD Menggunakan Lumen 6.2

Tutorial Membuat RESTful API CRUD Menggunakan Lumen 6.2
Assalamualaikum, wr. wb. semuanya. Kali ini kita akan belajar salah satu Microframework dari Laravel, yaitu LUMEN. Lalu kenapa Laravel membuat microframework ini? Jawabannya karena semakin berkembangnya teknologi, muncullah pembagian tugas dalam sebuah aplikasi web yaitu backend dan frontend. Nah Lumen ini difokuskan untuk membangun sebuah REST API (backend).

Lumen adalah versi ringan dari Laravel, jadi ada beberapa bundle source code yang dihilangkan. Oleh karena itu, buat kalian yang terbiasa menggunakan make:controller dan teman-temannya di Laravel, sayangnya kalian tidak bisa melakukan itu di Lumen.

Sebelum mengikuti tutorial ini, saya harap kalian sudah belajar dan mengerti tentang Laravel agar mempermudah pemahamannya. Dalam tutorial ini saya menggunakan Lumen versi 6 dan Windows 10 untuk Sistem Operasinya. Langsung aja, kalian buka terminal kalian. Kemudian ketikkan kode berikut ini untuk melakukan instalasi.

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

Tunggu hingga instalasi selesai. Selanjutnya buka folder hasil instalasi kalian pada kode editor yang kalian gunakan. Disini saya menggunakan Visual Studio Code. Mari kita lakukan konfigurasi awal terlebih dahulu.

Buka file bootstrap => app.php kemudian uncomment kode berikut ini.

<?php

$app->withFacades();

$app->withEloquent();

Dan kode berikut

<?php

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

Secara default kode-kode di atas dikomen oleh Lumen, maka dari itu kita harus uncomment terlebih dahulu agar dapat menggunakan fungsi-fungsi dari Lumen.

Sekarang buka file .env dan atur sesuai database kalian. Disini saya menggunakan mysql.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lumendb
DB_USERNAME=root
DB_PASSWORD=

Lalu buat migrasi datanya, seperti biasa saat di Laravel. Silahkan ketikkan perintah artisan berikut.

php artisan make:migration todo --create=todo

Buka file migrasi yang sudah kita buat tersebut pada folder database => migrations => 2019_10_28_084602_todo.php
Samakan isinya seperti berikut.

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

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

    public function down()
    {
        Schema::dropIfExists('todo');
    }
}

Lanjut jalankan perintah berikut.

php artisan migrate

Oke, sampai sini kita sudah membuat database untuk menyimpan data yang akan kita kelola nanti. Sekarang kita buat Controller untuk membuat operasi CRUD-nya. Perlu diingat bahwa kita menggunakan Lumen (Microframework) yang mana kita tidak dapat menggunakan perintah artisan make:controller seperti di Laravel. Karena memang library bawaan Laravel sudah dihilangkan. Sehingga membuat Lumen menjadi lebih ringan.


Lalu gimana cara membuatnya? Cukup buka folder App => Http => Controllers nanti kita akan menemukan file ExampleController.php yang akan kita duplikat untuk Controller baru kita nanti. Silahkan beri nama sesuai kebutuhan. Disini saya beri nama todoController.php dan berikut ini isinya.

<?php

namespace App\Http\Controllers;

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

    //
}

Lalu tambahkan fungsi CRUD-nya sehingga kode lengkapnya seperti berikut.

<?php

namespace App\Http\Controllers;

use App\Todos; //File Model
use Illuminate\Http\Request;

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

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

        return response('Berhasil Tambah Data');
    }
    public function update(Request $request, $id)
    {
        $data = Todos::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 = Todos::where('id', $id)->first();
        $data->delete();

        return response('Berhasil Menghapus Data');
    }
}

Disini saya tidak akan menjelaskan secara detail kode-kode di atas. Karena pada dasarnya sama saja dengan Eloquent Laravel biasa. Silahkan cek disini jika ingin melihat penjelasanya. Bedanya, di Lumen ini kita mengembalikan respone data JSON.

Lihat kode paling atas (setelah namespace) kita harus meng-import Model Todos yang mana harus kita buat terlebih dahulu. Untuk membuatnya hampir sama saat kita membuat Controller tadi. Buka folder App lalu duplikat file User.php dan beri nama Todos.php. Terakhir isikan kodenya seperti berikut.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Todos extends Model
{

    protected $table = 'todo';

}

Langkah terakhir, silahkan buat route-nya. Buka file routes => web.php kemudian tambahkan kode berikut.

<?php

$router->get('/todo', 'todoController@index');
$router->get('/todo/{id}', 'todoController@show');
$router->post('/todo/save', 'todoController@store');
$router->post('/todo/{id}/update', 'todoController@update');
$router->post('/todo/{id}/delete', 'todoController@destroy');

Nah sekarang RESTful API yang kita buat siap untuk dipakai. Caranya jalankan server dengan perintah berikut.

php -S localhost:8000 -t ./public

Untuk mengetes apakah API yang kita buat dapat digunakan sebagaimana fungsinya, kalian dapat menggunakan aplikasi POSTMAN. Silahkan Lihat Disini untuk Tutorial Testing APIs Menggunakan Postman.

Oke sekian tutorial kali ini, semoga bermanfaat, sekian Wassalamualaikum wr. wb.

Posting Komentar

0 Komentar