Tutorial Restful API Laravel 10 #2 : Membuat API Resources


Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com
Tutorial Restful API Laravel 10 #2 : Membuat API Resources

Halo teman-teman semuanya, pada artikel kali ini kita semua akan belajar membuat fitur yang bernama API Resources di dalam project Laravel.

Sebelum kita melangkah lebih jauh, maka kita perlu tahu terlebih dahulu apa itu API Resources yang ada di dalam Laravel.

API Resources merupakan layer yang berfungsi untuk melakukan transformasi Model menjadi format JSON dengan mudah, cepat dan scalable. Dengan memanfaatkan fitur ini, kita bisa membuat format JSON dengan sangat terperinci dan tentu saja mempercepat kita dalam waktu pengembangan.

Untuk membuat API Resources di Laravel kita bisa menggunakan perintah artisan make:resource. Dan secara default file yang digenerate akan diletakkan di dalam folder app/Http/Resources.

Untuk informasi selengkapnya, teman-teman bisa melihatnya pada dokumentasi resminya di link berikut ini : https://laravel.com/docs/10.x/eloquent-resources#introduction

Setelah mengetahui apa itu API Resources, maka kita akan lanjutkan membuat-nya di dalam project kita.

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 PostResource

Perintah di atas digunakan untuk membuat file API Resource baru dengan nama PostResource.php, yang mana file-nya bisa teman-teman lihat di dalam folder app/Http/Resources/PostResource.php.

Langkah 2 - Custom Response JSON

Karena kita akan membuat response JSON yang berbeda, maka kita perlu menyesuaikan isi yang ada di dalam file PostResource.php.

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

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class PostResource 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;
    }

    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'success'   => $this->status,
            'message'   => $this->message,
            'data'      => $this->resource
        ];
    }
}

Dari perubahan kode di atas, class PostResource merupakan turunan dari kelas JsonResource yang disediakan oleh framework Laravel.

class PostResource extends JsonResource

Dan class PostResource ini memiliki tiga properti publik yaitu $status, $message, dan $resource.

public $status;
public $message;
public $resource;

Properti $status dan $message digunakan untuk menyimpan status dan pesan yang ingin ditampilkan dalam response API. Sedangkan properti $resource digunakan untuk menyimpan data yang akan dikirimkan dalam response API.

Di dalam method __construct kita berikan tiga parameter yaitu $status, $message, dan $resource. Jadi saat objek dari class PostResource dibuat dan method __construct ini dipanggil, maka nilai dari parameter tersebut akan digunakan untuk mengatur nilai dari properti $status, $message, dan $resource.

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

Kemudian untuk method toArray() adalah method yang diimplementasikan dari class JsonResource. Method ini akan dipanggil ketika objek PostResource diubah menjadi array.

Method ini akan mengembalikan sebuah array dengan tiga key yaitu success, message, dan data. Nilai dari key success dan message akan diambil dari properti $status dan $message, sedangkan nilai dari key data akan diambil dari properti $resource.

public function toArray($request)
{
    return [
        'success'   => $this->status,
        'message'   => $this->message,
        'data'      => $this->resource
    ];
}

Jadi kurang lebih seperti itu cara membuat API Rsources di dalam Laravel dan sekaligus membuat custom untuk response JSON-nya.

Pada artikel selanjutnya kita semua akan belajar bagaimana cara membuat Model dan Migration, kemudian kita juga akan melakukan konfigurasi database di dalam project Laravel.

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