Tutorial Restful API di Laravel 9 #2 : Membuat API Resources


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

Halo teman-teman semuanya, di artikel sebelumnya kita telah belajar bagaimana cara melakukan installasi project Laravel 9, sekarang kita akan lanjutkan belajar tentang API Resources di dalam Laravel.

API Resources merupakan sebuah layer yang mentransformasi data yang di dapatkan dari Model dan mengubahnya menjadi format JSON dengan lebih cepat dan baik. Dengan menggunakan fitur ini kita bisa lebih mudah melakukan custom response, misalnya ingin menampilkan attribute dan collection tertentu yang ada di dalam Model menjadi format JSON.

Sebenernya kita juga bisa menggunakan fitur dari Eloquent yaitu toJson untuk membuat sebuah response di dalam Model, tapi dengan menggunakan API Resouces kita bisa memberikan kontrol lebih dan sangat terperinci.

Langkah 1 - Membuat API Resources

Sekarang kita lanjutkan untuk melakukan generate resources. Silahkan jalankan perintah berikut ini di dalam terminal/CMD dan pastikan sudah berada di dalam project Laravel-nya.

php artisan make:resource PostResource

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

Secara default kita sudah bisa menggunakan Resources tersebut, tapi karena kita ingin memberikan custom response, maka kita perlu sedikit memberikan perubahan di dalamnya.

Langkah 2 - Melakukan Custom API Resources

Sekarang kita lanjutkan untuk melakukan kustomisasi Resource yang sudah kita buat tadi. SIlahkan 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;
    
    /**
     * __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, pertama kita menambahkan 2 properti baru, yaitu $statue dan $message.

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

Setelah itu kita membuat sebuah method dengan jenis __construct, dimana fungsi ini akan pertama kali dijalankan ketika class tersebut di panggil. Dan di dalamnya kita parsing 3 variable :

  • $status - merupakan properti $status yang kita buat di atas, yang mana isinya nanti akan berupa nilai boolean, yaitu true atau false.
  • $message - merupakan properti $message yang kita buat di atas, yang mana isinya nanti akan berupa pesan/message tentang hasil yang dibuat.
  • $resource - merupakan data yang akan di transformasi, ini nanti akan berupa data Model yang dikirim dari controller.

Setelah itu, di dalam method toArray kita melakukan return ke 3 variable di atas, kurang lebih seperti berikut ini :

return [
   'success'   => $this->status,
   'message'   => $this->message,
   'data'      => $this->resource
];

Sampai disini pembahasan bagaimana cara membuat API Resource di Laravel dan melakukan kustomisasi di dalamnya. Di artikel berikutnya kita akan belajar bagaimana cara melakukan proses menampilkan data menggunakan Rest API di Laravel 9.

Terima Kasih



Fika Ridaul Maulayya
Full-Stack Web 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