Cara Mudah Membuat REST API dengan Lumen dan MySQL

 ⊛ • 12 mins read

Main Image

Lumen adalah microframework yang dibuat oleh Laravel untuk memenuhi kebutuhan developer yang ingin membuat aplikasi yang lebih kecil dari Laravel. Karena banyak library telah dihapus dari bundle source code, Lumen dapat digunakan sebagai framework untuk membuat REST API.

REST (REpresentational State Transfer) adalah arsitektur komunikasi berbasis web standar, biasanya digunakan dalam pengembangan layanan berbasis web. Biasanya HTTP (Hypertext Transfer Protocol) digunakan sebagai protokol komunikasi data. Dalam REST API, kata kerja HTTP bertindak sebagai tindakan, dan endpoint adalah resource yang ditindaklanjuti. Berikut adalah penggunaannya:

  • GET: untuk mendapatkan resource
  • POST: untuk membuat resource
  • UPDATE: untuk memperbarui resource
  • DELETE: untuk menghapus resource

Persiapan

Dalam tutorial ini, saya menggunakan resources sebagai berikut:

Resources Versi
PHP 8.0.0
Composer 2.0.9
MySQL 15.1

Instalasi

Untuk menginstall Lumen kita akan menggunakan composer dengan command berikut.

1
composer create-project --prefer-dist laravel/lumen rest

Setelah terinstall, kamu bisa menjalankan secara lokal dengan Laravel Homestead, Laravel Valet, atau dengan PHP development server.

1
php -S localhost:8000 -t public

Lalu itu buka http://localhost:8080 untuk melihat halaman pertama dari Lumen. img

Migration Database

Jika sudah berhasil dalam tahap instalasi, sekarang saatnya kita masuk dalam tahap database.

  1. Pertama jalankan MySQL dan buat database baru yang bernama db_rest.
    1
    
    CREATE DATABASE db_rest;
    
  2. Berikutnya buka file .env dan ganti pengaturan databasenya.
    1
    2
    3
    
    DB_DATABASE=db_rest
    DB_USERNAME=root
    DB_PASSWORD=
    
  3. Lalu kita buat file migration dengan menjalankan command berikut.
    1
    
    php artisan make:migration create_mahasiswa_table
    

    Dengan menjalankan command tersebut maka file migration baru akan dibuat di folder database/migrations

    img

  4. Setelah itu buka file hasil migration tadi dan ubah kodenya menjadi seperi berikut.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
     <?php
    
     use Illuminate\Database\Migrations\Migration;
     use Illuminate\Database\Schema\Blueprint;
     use Illuminate\Support\Facades\Schema;
    
     class CreateMahasiswaTable extends Migration
     {
         /**
         * Run the migrations.
         *
         * @return void
         */
         public function up()
         {
             Schema::create('mahasiswa', function (Blueprint $table) {
                 $table->id();
                 $table->string('nama');
                 $table->string('nim');
                 $table->integer('ukt');
                 $table->timestamps();
             });
         }
    
         /**
         * Reverse the migrations.
         *
         * @return void
         */
         public function down()
         {
             Schema::dropIfExists('mahasiswa');
         }
     }
    
  5. Berikutnya jakankan command berikut untuk migrate database.
    1
    
    php artisan migrate
    

    Setelah menjalankan command diatas maka terbentuk tabel baru bernama mahasiswa dan jika kita buka maka isinya adalah berikut. img

  6. Lalu buat data dummy untuk kita test nantinya
    1
    2
    3
    4
    
    INSERT INTO mahasiswa(id, nama, nim, ukt, created_at, updated_at)
     VALUES(NULL, 'Anwar', '12345', '3', NOW(), NOW()), 
         (NULL, 'Dwi', '12346', '4', NOW(), NOW()),
         (NULL, 'Faisal', '12347', '5', NOW(), NOW());
    

    Sehingga isinya sebagai berikut img

Membuat Model

Dalam Laravel kita bisa membuat model dan controller dengan artisan, tetapi Lumen tidak mensupport command tersebut sehingga kita harus membuat secara manual.

Buat file baru bernama Mahasiswa.php dalam folder app/Models dan masukkan kode berikut.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Mahasiswa extends Model
{
    protected $table = 'mahasiswa';
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'nama', 'nim', 'ukt'
    ];

}

Tidak seperti Laravel, Lumen tidak meload Eloquent dan Facades dalam inisialisasinya. Maka dari itu kita harus meload secara manual dengan menghapus comment di file bootstrap/app.php sehingga seperti berikut.

1
2
3
4
5
6
$app->withFacades();
$app->withEloquent();

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

Membuat Controller

  1. Masuk dalam folder app/Http/Controllers lalu ubah nama ExampleController.php menjadi MahasiswaController.php

    img

  2. Setelah itu ubah kodenya menjadi seperti berikut.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    
     <?php
    
     namespace App\Http\Controllers;
    
     use App\Models\Mahasiswa;
     use Illuminate\Http\Request;
    
     class MahasiswaController extends Controller
     {
         /**
         * Create a new controller instance.
         *
         * @return void
         */
         public function __construct()
         {
             //
         }
    
         public function index()
         {
             $mahasiswas = Mahasiswa::all();
             return response()->json($mahasiswas);
         }
    
         public function create(Request $request)
         {
             $mahasiswa = new Mahasiswa();
             $mahasiswa->nama = $request->nama;
             $mahasiswa->nim = $request->nim;
             $mahasiswa->ukt = $request->ukt;
                
             $mahasiswa->save();
             return response()->json($mahasiswa);
         }
    
         public function show($id)
         {
             $mahasiswa = Mahasiswa::find($id);
             return response()->json($mahasiswa);
         }
    
         public function update(Request $request, $id)
         {
             $mahasiswa= Mahasiswa::find($id);
                
             $mahasiswa->nama = $request->input('nama');
             $mahasiswa->nim = $request->input('nim');
             $mahasiswa->ukt = $request->input('ukt');
             $mahasiswa->save();
             return response()->json($mahasiswa);
         }
    
         public function destroy($id)
         {
             $mahasiswa = Mahasiswa::find($id);
             $mahasiswa->delete();
             return response()->json('data mahasiswa berhasil dihapus');
         }
     }
    

Membuat Routes

Untuk membuat route, buka file app.php dalam folder routes dan tambahkan kode berikut.

1
2
3
4
5
6
7
$router->group(['prefix'=>'api/v1'], function() use($router){
    $router->get('/mahasiswa', 'MahasiswaController@index');
    $router->post('/mahasiswa', 'MahasiswaController@create');
    $router->get('/mahasiswa/{id}', 'MahasiswaController@show');
    $router->put('/mahasiswa/{id}', 'MahasiswaController@update');
    $router->delete('/mahasiswa/{id}', 'MahasiswaController@destroy');
});

Testing

Setelah semua tahapan selesai, saatnya kita mengetes API yang telah kita buat, disini saya menggunakan postman untuk mengetesnya.

GET seluruh data mahasiswa

img

GET satu data mahasiswa

img

POST menambah satu data mahasiswa

img

PUT memperbarui satu data mahasiswa

img

DELETE satu data mahasiswa

img

Selesai

Selesai sudah pembahasan kita kali ini, dengan ini kamu telah membuat REST API dengan Lumen framework dari Laravel dan database MySQL.

Bagaimana pengalamanmu dalam dalam membuat REST API dengan Lumen? Yuk! Ceritakan pengalamanmu di kolom komentar :)

Share this post:


Tags Other Articles Tutorial Membuat Form Login dan Register dengan Session di PHP