Tutorial Membuat REST API CRUD Dengan Framework Lumen

Untuk membuat REST API, kita membutuhkan framework untuk menghandle sistem API yang akan anda bu...
Penulis
Admin
Kategori
Tutorial
Estimasi
3 menit baca
Dilihat
539
Posting
17 Aug 2022
Tutorial Membuat REST API CRUD Dengan Framework Lumen Untuk membuat REST API, kita membutuhkan framework untuk menghandle sistem API yang akan anda buat, saat ini banyak orang menggunakan LUMEN untuk membuat REST API karena ringan dan scalabel. LUMEN merupakan bagian dari Laravel yang bersifat micro-framework yang lebih ramping dan cepat, oleh karena itu LUMEN sangat cocok digunakan jika hanya membangun sistem REST API. Tutorial Membuat REST API CRUD Dengan Framework Lumen
2022-11-25

REST API merupakan komponen dalam website yang harus dikuasai oleh web developer, karena hampir seluruh website didunia ini menggunakan API untuk bertukar data karena kelebihannya yang sangat cepat dan ringan. Untuk membuat REST API, kita membutuhkan framework untuk menghandle sistem API yang akan anda buat, saat ini banyak orang menggunakan Lumen untuk membuat REST API karena ringan dan scalabel. Lumen merupakan bagian dari Laravel yang bersifat micro-framework yang lebih ramping dan cepat, oleh karena itu Lumen sangat cocok digunakan jika hanya membangun sistem REST API.

Dalam artikel kali ini, kita akan memberikan sebuah tutorial singkat padat dan jelas untuk membuat REST API dengan menggunakan Lumen.

 

Membuat REST API dengan framework Lumen

 

 

1. Install framework Lumen

Sebelum membangun REST API tentu kita harus menginstall terlebih dahulu framework Lumen ini, buka terminal lalu masukan perintah berikut:

composer create-project --prefer-dist laravel/lumen rest-api-menggunakan-lumen

Tunggu hingga proses installasi berhasil dan secara otomatis akan membuat folder baru yang bernama rest-api-menggunakan-lumen, kamu bisa menganti nama project sesuai yang kamu inginkan, jika menggunakan Visual studio kode, lanjutkan dengan membuka kode editor tersebut dengan perintah:

code .

Jika kamu menggunakan XAMPP, bisa ikuti langkah berikut ini, buat folder didalam htdocs sesuai dengan nama project anda, lalu buka terminal, arahkan terminal kedalam directory project kalian, lalu masukkan perintah berikut:

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

Tunggu hingga proses installasi selesai, jika sudah masukan perintah:

code .

Maka akan secara otomatis terarahkan kedalam Visual Studio Code dengan isi project Lumen yang tadi sudah terinstall. 

 

2. Konfigurasi database

Langkah selanjutnya adalah konfigurasi Database, buat database didalam mysql kamu setelah itu buka file .env, sesuaikan nama database dan lainnya, contoh:

APP_NAME=Lumen
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
APP_TIMEZONE=UTC

LOG_CHANNEL=stack
LOG_SLACK_WEBHOOK_URL=

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lumen_rest_api
DB_USERNAME=localhost
DB_PASSWORD=root

CACHE_DRIVER=file
QUEUE_CONNECTION=sync

Pada contoh kali ini, kita menggunakan mysql untuk database dan penyimpanan data. langkah selanjutnya adalah proses migrasi.

 

3. Migrasi basis data

Jika proses konfigurasi sudah selesai, langkah selanjutnya adalah proses migrasi data yang akan kita buat, buka terminal didalam VScode kalian, lalu ikuti perintah berikut untuk membuat migrasi baru:

masuk kedalam folder lumen:

cd lumen

lalu masukkan perintah migrasi yaitu:

php artisan make:migration create_users_table

Jika sudah selesai, maka otomatis akan membuat file baru didalam folder database/migrations, buka file tersebut kita akan membuat beberapa atribut baru untuk data yang kita butuhkan seperti nama, email, kalian bisa ikuti kode dibawah ini:

<?php

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

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('nama');
            $table->string('email');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}

Setelah selesai, ikuti perintah berikut untuk membuat table user:

php artisan migrate

Maka atribut seperti nama, email sudah terbuat dengan otomatis.

 

4. Membuat model

Langkah selanjutnya adalah membuat file baru didalam folder app/Models dengan nama users.php, lalu ikuti kode dibawah ini:

<?php

namespace App\Models;

use illuminate\Database\Eloquent\Model;

Class Users extends Model
{
    protected $table = 'users';

    protected $fillable = [
        'nama', 'email'
    ];
}

Pada framework Lumen kita perlu melakukan konfigurasi tambahan saat menggunakan Eloquent dan Facades, kamu bisa masuk kedalam folder Bootstrap lalu buka file App.php, cari dan uncomment baris kode berikut:

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

 

5. Membuat controller baru

Setelah selesai melakukan konfigurasi dan membuat file model baru, langkah selanjutnya adalah membuat file baru didalam folder app/Http/Controllers, buat file baru dengan nama UsersController.php bisa ikuti kode dibawah ini:

<?php

namespace App\Http\Controllers;

use App\Models\Users;
use Illuminate\Http\Request;

class UsersController extends Controller
{
    protected $limit = 5;

    // Halaman index
    public function index()
    {
        $users = Users::paginate($this->limit);

        return response()->json([
            'status' => 'success',
            'data' => $users->items(),
            'pagination' => [
                'total' => $users->total(),
                'per_page' => $users->perPage(),
                'current_page' => $users->currentPage(),
                'last_page' => $users->lastPage(),
                'from' => $users->firstItem(),
                'to' => $users->lastItem(),
            ]
        ], 200);
    }

    // Tampilkan data
    public function show($id)
    {
        $users = Users::find($id);
        if(!$users) {
            return response()->json([
                'status' => 'error',
                'message' => 'User tidak ditemukan!'
            ], 404);
        }

        return response()->json([
            'status' => 'success',
            'message' => $users
        ], 200);
    }

    // Simpan data
    public function store(request $request)
    {
        // Validasi
        $this->validate($request, [
            'nama' => 'required',
            'email' => 'required'
        ]);

        $users = new Users();
        $users->nama = $request->input('nama');
        $users->email = $request->input('email');
        $users->save();

        return response()->json([
            'status' => 'success',
            'message' => 'User berhasil ditambahkan'
        ], 201);
    }

    // Update data
    public function update(request $request, $id)
    {
        // Validasi
        $this->validate($request, [
            'nama' => 'required',
            'email' => 'required'
        ]);

        $users = Users::find($id);
        if(!$users) {
            return response()->json([
                'status' => 'error',
                'message' => 'User tidak ditemukan!'
            ], 404);
        }
        $users->nama = $request->input('nama');
        $users->email = $request->input('email');
        $users->save();

        return response()->json([
            'status' => 'success',
            'message' => 'User berhasil diupdate'
        ], 200);
    }

    // Hapus data
    public function destroy($id)
    {
        $users = Users::find($id);
        if(!$users) {
            return response()->json([
                'status' => 'error',
                'message' => 'User tidak ditemukan!'
            ], 404);
        }
        $users->delete();

        return response()->json([
            'status' => 'success',
            'message' => 'User berhasil dihapus'
        ], 200);
    }
}

 

6. Mengatur route

Setelah selesai membuat file controller untuk users, langkah selanjutnya adalah mengatur route untuk masing-masing method, buka file Web.php didalam folder Route, kalian bisa menambahkan baris tambahan dengan memasukan kode dibawah ini:

$router->group(['prefix' => 'api/v1/users'], function () use ($router) {
    $router->get('/', '[email protected]');
    $router->get('/{id}', '[email protected]');
    $router->post('/', '[email protected]');
    $router->put('/{id}', '[email protected]');
    $router->delete('/{id}', '[email protected]');
});

Untuk router, kita mencontohkan dengan mengarahkan masing-masing method dengan prefix URL yaitu api/v1/users, setelah semua selesai mari kita uji coba dengan menggunakan API testing kesayangan kalian.

 

7. Pengujian API endpoint

Pada tahap ini, kita akan menguji coba REST API yang telah kita buat dengan LUMEN, kali ini kita mencontohkan dengan menggunakan API Tester dari Thunder Client atau bisa juga dengan Postman, sebelum pengujian, jalankan terlebih dahulu aplikasi lumen kalian, lalu arahkan URL endpoint sesuai dengan kriteria, berikut adalah contoh dari hasil pengujian REST API yang telah kita jalankan.

 

1. Menambahkan user baru

Membuat REST API Dengan Framework Lumen - Method POST


2. Mengambil semua user

Membuat REST API Dengan Framework Lumen - index


3. Mengambil user berdasarkan id

Membuat REST API Dengan Framework Lumen - Method GET

 

4. Merubah data user berdasarkan id

Membuat REST API Dengan Framework Lumen - Method UPDATE

 

5. Menghapus user berdasarkan id

Membuat REST API Dengan Framework Lumen - Method DELETE

Aplikasi REST API sederhana dengan Lumen sudah berhasil dijalankan, masing-masing method yang kami uji coba diantaranya, POST, GET, PUT dan DELETE.

 

8. Kesimpulan

Akhirnya kita sudah berhasil membuat REST API dengan lumen dengan menggunakan method GET, POST, PUT dan DELETE, kalian juga bisa menggunakan contoh dari tutorial ini sesuai dengan kebutuhan aplikasi kalian, dari hasil uji coba performa dari framework ini menurut kita sudah lumayan cepat dan responsif, framework Lumen memang sangat cocok untuk digunakan untuk penggunaan sistem REST API karena ukurannya yang relatif kecil dan lebih cepat, namun berbeda dengan Laravel, dalam micro-framework ini kita perlu konfigurasi tambahan untuk menjalankan aplikasi REST API dengan menggunakan Lumen.

Komponen-komponen yang sudah kita buat tidak cukup untuk membuat REST API, kalian juga bisa memodifikasinya dengan menambahkan Authorization, Rate limiting dan lainnya.

Share