Tutorial RESTful API Laravel 12 #3 : Membuat API Resources


Tutorial RESTful API Laravel 12 #3 : Membuat API Resources

Halo teman-teman semuanya, pada artikel sebelumnya kita telah belajar bagaimana cara membuat Model dan Migration di dalam Laravel 12 dan pada artikel kali ini kita semua akan belajar bagaimana cara membuat dan mengkonfigurasi API Resources di dalam Laravel 12.

Apa Itu API Resources ?

API Resources di Laravel adalah fitur yang digunakan untuk mengubah data Model Eloquent menjadi format JSON yang lebih terstruktur dan mudah dikendalikan. Ini berguna saat membangun API, sehingga kita dapat mengontrol bagaimana data dikirim ke client.

Kenapa Menggunakan API Resources?

  1. Memisahkan Logika Data & Presentasi - API Resources membantu kita mengontrol data apa saja yang dikirim ke client tanpa mengubah model atau controller.
  2. Keamanan Data - Mencegah data sensitif (seperti password) dikirim ke client secara tidak sengaja.
  3. Konsistensi Format Response - Memudahkan frontend untuk menerima data dengan format yang jelas.

Langkah 1 - Membuat API Resources

Silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD dan pastikan sudah berada di dalam project Laravel-nya.

php artisan make:resource ProductResource

Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 1 file baru yang berada di dalam folder app/Http/Resources/ProductResource.php.

Langkah 2 - Custom Response

Sebenarnya, secara bawaan API Resource yang telah digenerate sudah bisa langsung digunakan, tapi karena kita akan menyesuaikan format JSON yang diinginkan, maka kita perlu melakukan sedikit modifikasi di dalam file tersebut.

Silahkan teman-teman buka file app/Http/Resources/ProductResource.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.

app/Http/Resources/ProductResource.php

<?php

namespace App\Http\Resources;

use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;

class ProductResource extends JsonResource
{
    //define properti
    public $status;
    public $message;
    public $resource;

    /**
     * __construct
     *
     * @param  mixed $status
     * @param  mixed $message
     * @param  mixed $resource
     * @return void
     */
    public function __construct($status, $message, $resource)
    {
        parent::__construct($resource);
        $this->status  = $status;
        $this->message = $message;
    }

    /**
     * toArray
     *
     * @param  mixed $request
     * @return array
     */
    public function toArray(Request $request): array
    {
        return [
            'success'   => $this->status,
            'message'   => $this->message,
            'data'      => $this->resource
        ];
    }
}

Dari perubahan kode di atas, pertama kita menambahkan 3 properti, yaitu:

//define properti
public $status;
public $message;
public $resource;

Properti ini digunakan untuk menyimpan status, pesan, dan data yang akan dikirimkan dalam respons JSON.

Kemudian kita buat method _construct yang menerima 3 parameter, yaitu $status, $message dan $resource. Konstruktor ini akan dipanggil untuk menginisialisasi nilai dari properti $status dan $message dengan nilai yang diberikan oleh controller nantinya.

public function __construct($status, $message, $resource)
{
    parent::__construct($resource);
    $this->status  = $status;
    $this->message = $message;
}

Setelah itu, di dalam method toArray kita ubah bagian return-nya, tujuaanya agar mengembalikan format JSON yang sesuai dengan yang dibutuhkan.

Jadi, tujuan dari ProductResource ini adalah untuk membuat data dari Model Product ke dalam format JSON yang sesuai dengan kebutuhan, termasuk penambahan informasi status dan pesan tertentu.

Kesimpulan

Pada artikel kali ini, kita semua telah belajar mengenal apa itu API Resources di dalam Laravel, membuat API Resources dan melakukan custom response di dalam API Resurces.

Pada artikel selanjutnya, kita semua akan belajar bagaimana cara menampilkan data dari database dalam format JSON menggunakan API Resources di Laravel 12.

Terima Kasih


Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami